Jquery foreach内部ajax调用的解决方案

Jquery foreach内部ajax调用的解决方案,jquery,html,ajax,foreach,Jquery,Html,Ajax,Foreach,我有一个带有小部件的json {“widgetname”:“widget1”,“widgetID”:“FJRH585fKFJN234NC”} 我循环遍历json并获取每个json对象的html。 $.ajax({ url:“get_json.php”, 数据:{操作:“获取小部件”,用户ID:user}, 类型:“POST”, 成功:功能(数据){ data=JSON.parse(数据); var r=0; $.each(数据,函数(){ var widgetID=this.widgetID;

我有一个带有小部件的json

{“widgetname”:“widget1”,“widgetID”:“FJRH585fKFJN234NC”}

我循环遍历json并获取每个json对象的html。

$.ajax({
url:“get_json.php”,
数据:{操作:“获取小部件”,用户ID:user},
类型:“POST”,
成功:功能(数据){
data=JSON.parse(数据);
var r=0;
$.each(数据,函数(){
var widgetID=this.widgetID;
$.ajax({
url:this.widgetname+“.html”,
数据:{},
键入:“获取”,
成功:功能(数据){
var parsed=$($.parseHTML(数据));
var parsed1=parsed.filter(“*”).first().attr(“数据项”,数据[r].widgetID);
$(“.grid”).append(parsed1);
r++;
}
});
});
}
});
对于每个json对象,我都执行一个ajax调用以获取小部件的html内容。
这不是正确的方法。
My widgetID未设置为正确的小部件,因为ajax调用未在新的小部件启动之前完成。
如何以正确的方式进行此操作?

试试这个。。。 您将此代码放入success函数中

success: function(datas){
        $.each(datas, function(i, item) {
          var parsed1 = parsed.filter("*").first().attr("data-item", item.widgetID);
          $(".grid").append(parsed1);
        });
}

$.each(data, function(i, item) {
   alert(item.widgetname);
});

首先收集所有ID,然后对端点进行一次调用以获取所有记录不是更好吗?根据您将拥有的记录数量,在每次迭代中调用端点的成本可能相当高。也许发送请求中包含的整个json,让服务器端代码返回所需内容?在数组foreach中,“this”不应使用,而应尝试使用“$.each(data,function(i,item){alert(item.widgetname);};”。“this”仅在DOM迭代时使用。每个小部件都有一个html文件,我从中获取小部件内容,并且小部件的数量是可变的。为什么最小投票?我在这里学习如何以正确的方式做这件事好吧,这解决了我的问题,但有人能解释我如何以正确的方式做这件事吗?我从同事那里听说这不是正确的方法。@JelleBotman$。each()用于访问面向对象的数据索引,而不是面向对象的,因为集合本身就是一个对象。