我收到了先前问题的建议,我需要一起修改我的代码链一系列POST请求,但我不知道如何实现这一点。具体来说,我给出的建议是:
发射一个帖子,让其成功处理程序在下一篇文章中解雇, 等...然后当所有帖子都完成后,最终帖子的成功 处理程序触发get
这个策略对我有意义,但我不知道如何实现。我试图在所有POST调用完成之前阻止对GET的调用。目前,我已实施$.when.apply
以延迟发送GET。这是代码:
function(){
$.when.apply(undefined, InsertTheAPPs()).done(function () {
$.ajax({
url: sURL + "fileappeal/send_apps_email",
success: function() {
var m = $.msg("my message",
{header:'my header', live:10000});
setTimeout(function(){
if(m)m.setBody('...my other message.');
},3000);
setTimeout(function(){
if(m)m.close(function(){
window.location.replace(sURL+'client/view');
});
},6000);
$('#ajaxShield').fadeOut(1000);},
error: function(){
$.msg("error message",
{header:'error header', live:10000});
}
});
});
}
这是jQuery $ .each循环的代码。这个代码不仅需要开始,而且必须在ajax调用fileappeal / send_apps_email之前结束:
function InsertTheAPPs(){
$('input[name=c_maybe].c_box').each(function(){
var jqxhrs = [];
if($(this).prop('checked')){
var rn = $(this).prop('value');
jqxhrs.push(
$.ajax({
url: sURL + 'fileappeal/insert_app',
type:"POST",
dataType: 'text',
data: {'rn': rn},
error: function(data) {console.log('Error:'+rn+'_'+data);}
})
)
return jqxhrs;
}
});
}
有人可以演示如何修改上面的代码来实现将多个POST调用链接在一起的策略吗?
答案 0 :(得分:2)
不要从.each
返回。它不起作用。而是这样做:
var jqxhrs = [];
$(...).each(...
});
return jqxhrs;
没有为.each
的返回值分配任何内容,无论如何都无法获得。从每个返回允许它像break / continue一样使用,这在你的上下文中没有意义。
此外,每个循环内部的var jqxhrs
导致在循环的每次迭代中在该上下文中声明一个新变量。