私は特定のアクションを持つフォームを持っています。フォームが送信されると、このアクションを呼び出す ajax 呼び出しを送信します。一方、進行状況を更新するために別の ajax 呼び出しを送信しています。私は次のようにしました:
$("form").submit(function() {
function callBack()
{
if( (this.readyState == 4) && (this.status == 200) )
{
console.log(this.responseText);
}
}
function updateProgress (){
asyncReq('/get_progress?progress='+progress, callBack);
}
function asyncReq(url, functionCallBack)
{
var request; //request must be a local var to avoid race condition
try
{ //for modern browsers
request = new XMLHttpRequest;
}
catch (err)
{// legacy IE
request = new ActiveXObject("Microsoft.XMLHTTP");
}
request.onreadystatechange = callBack;
request.open("GET", url, true);
request.send();
};
var progress = $("#progress").val();
asyncReq('/get_progress?progress='+progress, callBack);
setTimeout(updateProgress, 2000);
$(this).ajaxSubmit({async: true});
return false;
});
ここには 2 つの非同期 JavaScript 呼び出しがあります。1 つはフォームを送信するため、もう 1 つは進行状況を更新するためです。を印刷するとresponseText
、callBack
0.0 と 1.0 しか表示されません。これは、ajaxSubmit()
が呼び出される前と終了した後の 1 つです。進行状況のすべての価値を途中でも取得したいと思います。私が理解している限り、2番目のajax呼び出しasyncReq
は、が終了した後にのみ呼び出されajaxSubmit
ます。完了する前に別の完全な ajax 呼び出しを行う方法について、誰かが私に何か考えを教えてくれますajaxSubmit()
か?
ノート:
フォームはファイル フィールドとajaxSubmit
解凍で構成され、ファイルを処理し、各ファイルが処理された後に進行状況テーブルを更新します。このget_progress
メソッドは、そのテーブルの進捗値を抽出します。ajax呼び出しでフォームを送信するためにjquery.form.jsを使用しています。