2013-11-15 77 views
0

我发现了问题,但是我的解决方案不起作用。变量d0和d1被填充,但在代码创建并拼接数组storelocations之后。因此,我得到一个错误,d0和d1未定义。任何解决方案JSON javascript未定义变量问题

的Javascript:

$(function() { 


     $.get("/Map/GetJsonData", function (data) { 
      storeLocations = []; 
      var d0 = data[0].Delay; 
      var d1 = data[1].Delay; 


     }); 

     var storeLocations = new Array(); 
     storeLocations.splice(storeLocations.length, 0, d0); 
     storeLocations.splice(storeLocations.length - 1, 0, d1); 


} 

回答

1

AJAX是异步,可以创建一个回调或者你需要的AJAX回调里面是什么:

$.get("/Map/GetJsonData", function (data) { 
     storeLocations = []; 
     var d0 = data[0].Delay; 
     var d1 = data[1].Delay; 

     var storeLocations = new Array(); 
     storeLocations.splice(storeLocations.length, 0, d0); 
     storeLocations.splice(storeLocations.length - 1, 0, d1); 
}); 
1

既然你声明的变量(D0和d1)在$ .get方法的回调函数中,那些变量是私有的,并且只能在该函数声明的行后面访问。因此,您应该将storeLocations代码移到回调函数中。

$(function() { 


    var storeLocations = new Array(); 
    $.get("/Map/GetJsonData", function (data) { 
     storeLocations = []; 
     var d0 = data[0]; 
     var d1 = data[1]; 


     storeLocations.splice(storeLocations.length, 0, d0); 
     storeLocations.splice(storeLocations.length - 1, 0, d1); 

    }); 
}); 

在我的例子,我宣布storeLocations的$不用彷徨方法的范围之内,因此这将是jQuery的文件准备好方法范围(即它被宣布上线后)内的任何地方访问。

+0

是不是在外部功能举行的范围? – Zlatko