以前の質問から、一連の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ループのコードは次のとおりです。これは、開始するだけでなく、上記のfileappeal/send_apps_emailへのajax呼び出しの前に終了する必要があるコードです。
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呼び出しを連鎖させる戦略を実装するために、上記のコードを変更する方法を誰かが示すことができますか?