我有两个不同的ajax调用。第一个连接到Web服务的一个方法。如果它获得特定字段的任何空值,那么它应该从同一个Web服务调用另一个方法。这是代码..
$.ajax({
url: "webservices/ProdMonitorService.asmx/GetEstTimePrelimFinalCur",
data: "{'myactivity':'" + myactivity + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data) {
var obj = jQuery.parseJSON(data.d);
for (var i = 0; i <= obj.length - 1; i++) {
var dur_time_formated = '';
var mytimedur = obj[i].time_duration;
if (mytimedur != null) {
dur_time_formated = mytimedur.replace('.000000', '');
}
else {
//only one time check for this
$.ajax({
url: "webservices/ProdMonitorService.asmx/GetEstTimePrelimFinalCurTotalProcessing",
data: "{'myactivity':'" + myactivity + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data2) {
var obj2 = jQuery.parseJSON(data2.d);
dur_time_formated = obj2[0].total_processtime.replace('.000000', '');
}, error: function (result) {
//alert("Error: Please contact administrator for help: " + result.responseText);
}
});
}
对于第一个ajax调用,它得到obj [0] ...... obj [7]但是假设obj [0] .time_duration为null然后它应该转到第二个ajax调用,但是偶数方法“GetEstTimePrelimFinalCurTotalProcessing “返回一些结果,dur_time_formated varialbe为null;它甚至不会在第一个之后完全通过第二个ajax调用。
第一个完成后应该使用完成功能吗?
答案 0 :(得分:0)
请记住,ajax调用是异步的。这意味着dur_time_formated将在for循环之后设置。所以为了解决这个问题,你可以使用循环外的任何数组变量或同步ajax请求
答案 1 :(得分:0)
你应该在这里尝试“async:false”而不是“async:true”。这将适用于您的情况。