因此,基于Medium(https://medium.com/coding-design/writing-better-ajax-8ee4a7fb95f#.d7ymg99mp)的本教程,我试图使用延迟数组,ajax请求和jQuery.when方法来生成多个ajax请求并从每个请求中获取结果。
以下是我正在做的事情的代码
function updateAllGoingButtons(){
var dataToPass = {};
var deferreds = [];
$('.btn-group').find('button').each(function(){
console.log($(this).attr('id'));
dataToPass.button = $(this).attr('id');
var ajax = $.ajax({
url: '/update-buttons',
method: 'post',
data: dataToPass,
dataType:'json'
});
deferreds.push(ajax);
$.when.apply($, deferreds).then(function(){
});
});
}
我对如何使用这个$ .when函数以及我可以访问返回到ajax调用的数据的位置感到困惑。
我尝试插入一个简单的成功选项,但没有进入其回调函数。我该怎么做呢?
答案 0 :(得分:2)
您只是过早致电0000000000000000 <test>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 5d pop %rbp
5: c3 retq
0000000000000006 <main>:
6: 55 push %rbp
7: 48 89 e5 mov %rsp,%rbp
a: b8 00 00 00 00 mov $0x0,%eax
f: e8 00 00 00 00 callq 14 <main+0xe>
14: 5d pop %rbp
15: c3 retq
。在你开始所有的ajax调用并在数组中获得它们的承诺后,在<{strong>外部 when
循环中执行此操作:
each
这些ajax调用的结果将作为一系列离散参数提供给function updateAllGoingButtons(){
var dataToPass = {};
var deferreds = [];
$('.btn-group').find('button').each(function(){
console.log($(this).attr('id'));
dataToPass.button = $(this).attr('id');
var ajax = $.ajax({
url: '/update-buttons',
method: 'post',
data: dataToPass,
dataType:'json'
});
deferreds.push(ajax);
});
$.when.apply($, deferreds).then(function(){ // <=== Moved this
// <===
}); // <===
}
函数。每个参数都是一个包含三个条目的数组,对应于通常传递给then
函数的三个参数。由于您正在处理数组,因此您可能希望通过success
伪数组访问它们。拥有拒绝处理程序(arguments
的第二个参数,或者使用then
和最新版本的jQuery)也总是一个好主意:
catch