使用两个不同的ajax调用

时间:2014-04-17 04:36:41

标签: javascript jquery ajax json

我有两个不同的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调用。

第一个完成后应该使用完成功能吗?

2 个答案:

答案 0 :(得分:0)

请记住,ajax调用是异步的。这意味着dur_time_formated将在for循环之后设置。所以为了解决这个问题,你可以使用循环外的任何数组变量或同步ajax请求

答案 1 :(得分:0)

你应该在这里尝试“async:false”而不是“async:true”。这将适用于您的情况。