jquery每个json变量bug

时间:2013-06-25 15:27:18

标签: php jquery ajax json

我有一个奇怪的错误。当我尝试运行我的代码时:

var firstJson;
$.getJSON(site_url+"/more/sector_by_city/"+id+"?"+Math.random(), function( json ) { 
    $.each(json, function(key, value) {
        firstJson = 9;  
    });
}); 
alert(firstJson);

我收到的提醒是:"undefined"

为什么我得到这个而不是9

我在这里缺少什么?

(每个循环运行没有问题,JSON中有值) 最后,9会更改为其他值。

由于

3 个答案:

答案 0 :(得分:6)

异步功能我的朋友。在.getJSON请求完成之前,系统会调用您的提醒。您需要使用回调函数来获取正确的警报。

答案 1 :(得分:4)

因为当您致电alert(firstJson)时,异步$.getJSON调用尚未完成,因此firstJson没有与之关联的值。如果您将提醒移至$.each功能或$.each之后,以及$.getJSON结尾,则会有一个值。

答案 2 :(得分:2)

调用alert时,变量没有值。您必须等待getJSON结束,使用done()

var firstJson;
$.getJSON(site_url+"/more/sector_by_city/"+id+"?"+Math.random(), function( json ) { 
    $.each(json, function(key, value) {
        firstJson = 9;  
    });
}).done(function() {
   alert(firstJson);
});

参考文献:

  1. done()
  2. $.getJSON