2013-01-10 139 views
1

Im有一個變量'multi',與我在js文件中使用的名字相同。我需要爲我的aspx頁面中的變量設置一個值,並將其傳遞給javascript文件。無法找到任何幫助。如何在aspx文件中將腳本(.js)文件中的變量設置爲腳本中的變量

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; 
    } 
}) 
+1

如果在包含.js文件之前聲明'var multi'(全局作用域),那麼您應該已經可以從.js include中訪問它。 – webnoob

+0

我只在獲取數據後才加載腳本。仍然沒有得到。你能檢查更新的代碼嗎? – NewBie

+0

可以顯示你的整個HTML代碼(更具體地說,內聯JS寫入的區域和包含的地方) – webnoob

回答

0

multi應該在全局範圍內在您的包含範圍內使用,因爲您已在Global範圍內聲明它,即文檔的頂部位於功能塊之外。

嘗試改變

var seriesCount = window.multi.Trend.length; 

var seriesCount = multi.Trend.length; 

關閉主題:

你不需要做​​任務,你已經做了multi = resultObj;

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; 
    } 
} 
+0

你可以證實,當文件通過JQuery加載$ .getScript('Scripts/highcharts.src.js' ,function(){})' – webnoob

+0

根據您的意見更新 –

+0

rick schott ...這不起作用。你在DoWork下寫的部分實際上是在動態加載的js文件中:( – NewBie

0

聲明所需的數據類型的變量在後面的代碼(.aspx頁)

在後面的代碼(.aspx頁面中):

private string multi = "New"; 

public string Multi 
{ 
    get { return multi; } 
} 

在javascripts中:

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

這與代碼背後沒有任何關係,這是JS變量的範圍問題。ASPX部分是誤導性的,他只是一個HTML頁面。 – webnoob

相關問題