使用AJAX和jQuery将多个POST请求链接在一起

时间:2013-01-30 16:47:27

标签: ajax jquery

我收到了先前问题的建议,我需要一起修改我的代码一系列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调用链接在一起的策略吗?

1 个答案:

答案 0 :(得分:2)

不要从.each返回。它不起作用。而是这样做:

var jqxhrs = [];
$(...).each(...
});
return jqxhrs;

没有为.each的返回值分配任何内容,无论如何都无法获得。从每个返回允许它像break / continue一样使用,这在你的上下文中没有意义。

此外,每个循环内部的var jqxhrs导致在循环的每次迭代中在该上下文中声明一个新变量。