jquery中的每一个都未按预期工作

jquery中的每一个都未按预期工作,jquery,Jquery,我有以下代码 var last_id = ''; $('.products').each(function(){ $.ajax({ type: "POST", url: "index.php", data: 'id='+last_id, success: function(id){ last_id = id; } }); }); 我的问题是,我想从ajaxsuccess中获取最后

我有以下代码

var last_id = '';
$('.products').each(function(){
  $.ajax({
        type: "POST",
        url: "index.php",
        data: 'id='+last_id,
        success: function(id){
            last_id = id;
        }
    });
});
我的问题是,我想从ajaxsuccess中获取最后一个插入的id,并在id第二次调用时将其传递给ajax。 但现在它无法获取最后一个_id,第二次它再次以空字符串的形式发送 但是当我在ajax成功中提醒它时,它会提醒最后一个id吗?
如何实现它?

Ajax调用是否返回JSON数据?如果是,请尝试:

    success: function(data){
        last_id = data.id;
    }

或者类似的东西。

异步:ajax函数选项中的false将有所帮助。
但是我认为您走错了:)您不应该执行这么多ajax查询。

这不起作用,因为当您发送第二个请求时,第一个请求的响应还没有到达。这是因为您发送的请求都是异步的,所以第二个请求不会等待第一个请求完成。这就是第二次发送空字符串的原因

发送同步请求的一种方法是将
async
选项设置为
false

转到此处并在那里搜索
async
选项以找到正确的解释

但您应该注意,发送同步请求可能会暂时阻止浏览器,因为它会等待请求完成,然后再执行其他操作。

$.ajax()
是异步的,这意味着它从代码分支出来,并在代码继续运行时立即执行。因此,在任何ajax调用返回之前,所有ajax调用几乎在同一时间启动。您可以在ajax的参数中使用
'async':false,
,但这可能会冻结浏览器,直到所有请求完成

您可以通过等待回调进行下一次异步调用来解决此问题:

var last_id = '', count = 0;
(function getId(){
  $.ajax({
        type: "POST",
        url: "index.php",
        data: 'id='+last_id,
        success: function(id){
            last_id = id;
            if(++count < $('.products').length)
                getId();
        }
    });
  });
})();
var last_id='',count=0;
(函数getId(){
$.ajax({
类型:“POST”,
url:“index.php”,
数据:“id=”+最后一个id,
成功:功能(id){
最后一个id=id;
如果(++计数<$('.products')。长度)
getId();
}
});
});
})();
但是


我认为在您的情况下,最好发出一个请求,让服务器用一个Id数组响应。

您必须等待每个ajax

var pro=$('.products').lenght;
last_id(0,"");
function last_id(index,lastid){
  $.ajax({
        type: "POST",
        url: "index.php",
        data: 'id='+lastid,
        success: function(id){
            if(index<pro.length){
             last_id(index+1,id);
            }
        }
    });
});
}
var-pro=$('.products').lengh;
最后一个_id(0,“”);
函数last\u id(索引,lastid){
$.ajax({
类型:“POST”,
url:“index.php”,
数据:“id=”+lastid,
成功:功能(id){

如果(index),那是因为在发送下一个ajax调用(第2个)时,ajax调用尚未返回。我不确定您将如何成功地执行此操作。