2013-01-10 89 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

相关问题