如何在aspx文件中的脚本中将值设置为脚本(.js)文件中的变量

时间:2013-01-10 13:01:29

标签: javascript jquery asp.net

我有一个变量'multi',我在js文件中使用的名称相同。我需要在我的aspx页面中为变量设置一个值并将其传递给javascript文件。无法找到任何帮助。

aspx脚本代码

    var itemdata = [];
    var multi;
    //var plot;
    $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "ChartBinder.asmx/BindChart",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                //alert(multi);

                var resultObj = $.parseJSON(response.d);
                multi = resultObj;
               // alert(resultObj.Pie);
                multi.Trend = resultObj.Trend;
                //alert(multi.Trend);
                $.getScript('Scripts/highcharts.src.js', function () {
                    DrawPie(resultObj.Pie);
                    DrawTrend(resultObj.Trend);
                    // do something here

                });

            },
            error: function (msg) {
                alert("Error");
            }
        });
    });

js script

(function () {
   var seriesCount = window.multi.Trend.length;

   var newcolors = [];

   for (i = 0; i < seriesCount; i++) {
      newcolors[i] = multi.Trend[i].color;
   }
})

3 个答案:

答案 0 :(得分:0)

您的示例中的

multiGlobal范围内声明,因此可供您应用中的任何其他JS使用:

var multi; //global but must be included before code referencing it

(function () {
    var multi; //local
})

根据您的意见:

....
$.getScript('Scripts/highcharts.src.js', function () {
      DrawPie(resultObj.Pie);
      DrawTrend(resultObj.Trend);
      // do something here
      DoWork();
 });
 ...

 function DoWork()
 {
     var seriesCount = window.multi.Trend.length;
     var newcolors = [];
     for (i = 0; i < seriesCount; i++) {
       newcolors[i] = multi.Trend[i].color;
     }
 }

答案 1 :(得分:0)

在代码后面(.aspx页面)声明所需数据类型的变量

在Code背后(.aspx页面):

private string multi = "New";

public string Multi
{
    get { return multi; }
}

在javascripts中:

var multi='<%=Multi%>';
//Do your stuffs here

答案 2 :(得分:0)

multi应该在全局范围内,以便在您的include中使用,因为您已在Global范围内声明它,即在功能块之外的文档顶部。

尝试更改

var seriesCount = window.multi.Trend.length;

var seriesCount = multi.Trend.length; 

关闭主题:

您不需要执行multi.Trend = resultObj.Trend;任务,因为您已完成multi = resultObj;