var jsonData=false;
var maxRecords=0;
var successRecords=0;
var failedRecords=0;
上传完成后,脚本将文件名($ filename)传递给解析脚本。解析脚本返回包含文件中所有ITEMS的json对象。Ajax异步调用阻塞其他脚本
$.ajax({
url:'ajax/process-file.php',
type: "GET",
dataType:"json",
async:false,
data:{filename:'<?php echo $newFile ?>'}
}).success(function(data){
jsonData=data;
maxRecords=jsonData.length;
$("#record-found").html(maxRecords);
});
我为个别ITEM运行另一个脚本。
for(i=0;i<maxRecords;i++){
//AJAX CALL FOR INDIVIDUAL RECORD
$.ajax({
url:'ajax/save-single-planitem.php',
type: "POST",
async:false,
data:{item:jsonData[i]}
}).success(function(data){
console.log(data);
//IF RECORD WAS SUCCESFULLY ADDED OR UPDATED
if(data['result']=="SUCCESS"){
$("#records-success").html(successRecords++);
}
//IF RECORD WAS NOT ADDED
if(data['result']=="FAILED"){
$("#records-failed").html(failedRecords++);
}
});
}
现在的问题是,在第一个Ajax调用这一小部分
maxRecords=jsonData.length;
$("#record-found").html(maxRecords);
。
这会在所有执行完成后进行更改。更不用说其他尝试更改HTML也会在所有调用完成后反映出来。
我已经尝试将ajax调用放在异步请求完成后的代码。 完全难倒如何接近。
的jQuery/javscript解决方案将不胜感激。(没有任何额外的库加载)
你真的在运行同步(阻塞)Ajax调用吗?为什么? – jfriend00 2014-10-04 08:27:29
第一个我必须。获取记录以供进一步处理。第二个要获得成功和失败的正确值。因为那样我就不得不让用户选择如何处理失败的尝试。 – Rohan210 2014-10-04 08:38:17
@ Rohan210在这种情况下,不需要同步请求。 – 2014-10-04 08:46:54