2012-11-28 39 views
3

我正在寻找快速连续触发几个jQuery AJAX请求,所以响应不会在下一个请求之前发生。但是,我确实想要用成功功能来处理这些响应中的每一个。使用相同AJAX函数的多个AJAX调用

使用以下代码,前两个响应将被忽略,只有最后一个响应。

$('#button').click(function() { 
    var num = 3; 
    for(var i=0;i<num;i++) 
     ajaxCall(i); 
} 


function ajaxCall(data){ 
    $.ajax({ 
     url: '/echo/html/', 
     success: function(msg) { 
      alert(msg); 
     } 
    }); 
} 

但是我试图让所有三个警报都显示出来。似乎每次调用ajaxCall函数时,它都会使用与前一次相同的“对象”,而不是实例化一个新对象,这正是我想要做的。

+0

尝试增加'异步:FALSE'的Ajax调用,这是否改变行为? – rosshamish

+3

我得到3个警报:http://jsfiddle.net/NhrBt/虽然你错过了一个关闭'';'在''click'上。 –

+0

你是否获得了所有3的成功?检查网络日志中是否有开发人员工具,请求发送了多少以及您获得了哪些响应。 –

回答

-1

试试这个(使用Deferred Object

$('#button').click(function() { 
    var num = 3; 
    for(var i=0;i<num;i++) { 
     ajaxCall(i).done(function(data) 
      { 
      alert(data) 
      } 
     ); 
    } 
}); 


function ajaxCall(data){ 
    return $.ajax({ 
     url: '/echo/html/' 
    }); 
} 
+0

这是过度的。如果你仍然想使用它,那么你去 – Alexander

+0

复制问题拥有者的错误:关闭点击功能。 – nirazul

+0

为什么它过度?一个小鸟告诉我这一点:弃用通知:jQuery 1.8中不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。要准备代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。 –