每日雕蟲一技[2013-04-01]调皮的eval()函数

本文探讨了JavaScript中eval()函数的使用,揭示了它如何动态执行代码并可能带来的安全风险。通过实例展示了eval()在前台交互中的巧妙运用,同时提醒开发者注意其潜在的安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台:

 $("#BtnShowChart").click(function () {
                $("#content").css('display', 'none');
                var queryParas = {};
                queryParas.dateyear = $("#DDL_Year").val();
                queryParas.datasourcetype = $("#DDL_DataType").val();
                $.get('GetChartData.aspx', queryParas, function (data) {
                    if (data == "") {
                        alert("查询不到数据!");
                        return false;
                    }

                    var dataGet = eval(data);
                    showChart(dataGet.xAxis, dataGet.yAxis);
                });

            });

后台:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using XXXXX;
using System.Text;

namespace XXXXXXX
{
    /// <summary>
    ///  获取 图表数据
    /// </summary>
    public partial class GetChartData : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(Request.QueryString["dateyear"]) || string.IsNullOrWhiteSpace(Request.QueryString["datasourcetype"]))
            {               
                Response.Write("");
                Response.End();
            }
            
            string dateYear = Request.QueryString["dateyear"].ToString();
            string dataSourceType = Request.QueryString["datasourcetype"].ToString();

            Monitoring mon = new Monitoring();
            DataTable dt = mon.GetASDataNew(dateYear, int.Parse(dataSourceType));
            
            if (dt.Rows.Count > 0)
            {
                StringBuilder sbXaxis = new StringBuilder();
                StringBuilder sbYaxis = new StringBuilder();
                foreach (DataRow row in dt.Rows)
                {
                    sbXaxis.AppendFormat("'{0}'",row["CityName".ToUpper()].ToString());
                    sbXaxis.Append(",");
                    if (string.IsNullOrWhiteSpace(row["KH"].ToString()))
                    {
                        sbYaxis.Append("0");
                    }
                    sbYaxis.AppendFormat("{0}", row["KH".ToUpper()].ToString());
                    sbYaxis.Append(",");
                }

                Response.Write("({\"xAxis\":["+sbXaxis.ToString().TrimEnd(',')+"],\"yAxis\":["+sbYaxis.ToString().TrimEnd(',')+"]})");//注意中括号后面还有一双小括号
            }
            else
            {
                Response.Write("");
            }

            Response.End();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值