jQueryレコード挿入プロセスで2つの問題が発生しています。このすばらしいSOコミュニティが、これらの問題の少なくとも1つを解決するのに役立つことを願っています。これらは問題です:
問題1-サーバーの断続的な遅延
最初の問題は、私のUbuntu10.04サーバーPOST
がmySQLデータベースにデータを送信するときに断続的な4.5秒の遅延を示すように見えるという事実に関連しています。ほとんどのPOST
コマンドは通常のミリ秒以内に実行されますが、遅延が発生すると、常に約4.5秒のように見えます。これはビジーなパブリックサーバーではないため、サーバーの負荷が問題になることはありません。これらの短いビデオは、私が説明しようとしていることを示しています。
serverfaultに質問を投稿し、この問題1におそらくより適切なフォーラムからの入力を待っています。
問題2-jQueryのPOSTメソッドとGETメソッドのタイミング
私が解決しようとしている本当の問題は、GET
すべての呼び出しPOST
が完了する前にへの呼び出しを防ぐことです。現在、$.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});
}
});
});
}
上記の問題1で説明した遅延が原因で問題が発生します。すべてのメソッドが開始GET
された後にメソッドが呼び出されていますが、すべてのメソッドが終了するまでメソッドを待機する必要があります。これは私が支援を必要としている問題です。基本的に、ここで起こっているのは、すべてのレコードがmySQLデータベースに完全に挿入される前に確認メールが送信されているということです。POST
GET
POST
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;
}
});
}
GET
サーバー遅延の問題を回避し、すべてのPOST
メソッドが完了する前にへの呼び出しを防ぐ方法について、誰か提案がありますか?ありがとう。