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スコープ内で宣言したためです。つまり、関数ブロックの外側のドキュメントの先頭です。

変更してみてください

var seriesCount = window.multi.Trend.length;

var seriesCount = multi.Trend.length; 

オフトピック:

multi.Trend = resultObj.Trend;すでに行っているように、割り当てを行う必要はありませんmulti = resultObj;

于 2013-01-11T07:04:30.957 に答える
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スコープ内で宣言されているため、アプリケーション内の他の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 に答える