日期:2014-05-19  浏览次数:20643 次

jquery ajax异步数据问题
$.each(json,function(i,n){
  var url="";
  $.getJSON(url,function(json){
  $.each(json,function(i,n){});
  .........
  });
  //
});

如何确保只有当GETJSON()执行完了以后,each在执行下一次的循环呀。(不这样数据出错)
在//里面写sleep()什么的也没有用,异步处理呀,望高手解决。

------解决方案--------------------
没办法 只能改为同步的,不然你是不能阻止each的运行的
------解决方案--------------------
类似下面这种递归应该 可以解决

Java code


var json = ['1' , '2' , '3'];

function each(outjson){
    if(outjson.length > 0 ){
        var val = outjson.shift();     //移除一个元素,并返回
        var url="";
        $.getJSON(url,function(innerjson){
              $.each(innerjson,function(i,n){
                   
              });
              //循环完毕后,进入下一次递归
              each(outjson);    //因为这一行代码 是在里面的getJSON方法执行完,并且each也执行完之后 再执行,所以不会存在你说的哪种问题
       });
    }
}