1

我有一个变量 '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脚本

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

   var newcolors = [];

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

3 回答 3

0

multi在您的示例中声明在Global范围内,因此可用于您的应用程序中的任何其他 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;
     }
 }
于 2013-01-10T14:04:46.253 回答
0

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

在后面的代码(.aspx 页)中:

private string multi = "New";

public string Multi
{
    get { return multi; }
}

在 JavaScript 中:

var multi='<%=Multi%>';
//Do your stuffs here
于 2013-01-10T18:28:07.673 回答
0

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

尝试改变

var seriesCount = window.multi.Trend.length;

var seriesCount = multi.Trend.length; 

题外话:

你不需要multi.Trend = resultObj.Trend;像你已经完成的那样做作业multi = resultObj;

于 2013-01-11T07:04:30.957 回答