我有一个带有特定动作的表格。提交表单后,我发送一个调用此操作的 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 调用,一个用于提交表单,一个用于更新进度。当我打印出responseText
in 时callBack
,我只能看到 0.0 和 1.0。那是在ajaxSubmit()
调用之前和完成之后的一个。我也想在中间获得所有进展的价值。据我了解,asyncReq
仅在ajaxSubmit
完成后才调用第二个 ajax 调用。谁能告诉我如何在完成之前进行另一个完整的 ajax 调用ajaxSubmit()
?
笔记:
该表单由文件字段ajaxSubmit
和解压缩、处理文件并在处理每个文件后更新进度表组成。该get_progress
方法提取该表的进度值。我正在使用jquery.form.js通过 ajax 调用提交表单。