2013-05-04 108 views
0

我有一个问题,将一个值赋给全局变量并在函数内部使用它。这里是我的代码:为函数内的全局变量赋值

var chartinfo = {"c0":"0", "c1":"0"}; // This is my global variable 
$.getJSON("http://127.0.0.1:8080/chartinfo", function(json1){ 
    chartinfo = json1; // I need to assign json1's value to chartinfo 
}); 
$(function() { 
    $(document).ready(function() { 
     alert("external chartinfo " + chartinfo.c0.name); // I need to use chartinfo here 
+6

究竟有什么问题?当你运行代码时会发生什么?我相信这是你在更改之前访问'chartinfo'。请阅读http://stackoverflow.com/a/14220323/218196。另外,嵌套两个'ready'事件处理程序不会增加任何好处。 – 2013-05-04 12:07:44

+1

它是否提醒0? Felix可能是正确的document.ready正在执行getJSON回调之前执行。 – mikey 2013-05-04 12:10:02

回答

2

警报失败,因为您的请求尚未完成。你可以试试这个:

var chartinfo = { 
    "c0": "0", 
    "c1": "0" 
}; 

var jqxhr = $.getJSON("http://127.0.0.1:8080/chartinfo", function (json1) { 
    console.log("success"); 
}) 
    .done(function() { 
    chartinfo = json1; 
    alert("external chartinfo " + chartinfo.c0.name); // I need to use chartinfo here 
}) 
    .fail(function() { 
    console.log("error"); 
}) 

http://jsfiddle.net/ZpUsM/