2014-04-17 2 views
1

두 개의 다른 ajax 호출이 있습니다. 첫 번째 방법은 웹 서비스의 한 가지 방법에 연결합니다. 특정 필드에 대해 null 값을 가져 오는 경우 동일한 웹 서비스에서 다른 메서드를 호출해야합니다. 여기에 첫 번째 아약스 호출에 대한 2 개의 다른 ajax 호출 사용

$.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); 
       } 
      }); 


     } 

, 그것은 obj에 도착 코드에 .. [0] ... obj가 [7]하지만, OBJ [0] .time_duration가 가야 null를 제공 가정 해 봅시다 있습니다 두 번째 아약스 호출하지만 심지어 메서드 "GetEstTimePrelimFinalCurTotalProcessing"어떤 결과를 반환합니다, dur_time_formated varialbe null이 오면, 그것은 심지어 첫 번째 후 완전히 두 번째 아약스 호출을 통해 이동하지 않습니다.

첫 번째 작업이 완료된 후 완료 기능을 사용해야합니까?

답변

0

여기서 "async : true"대신 "async : false"를 시도해야합니다. 이것은 귀하의 경우에 효과적입니다.

+0

첫 번째 아약스 호출 또는 두 번째? – one1day

+0

첫 번째 아약스 호출. 하지만 두 가지 모두에서 사용할 수 있습니다. –

+0

문제를 해결해 주셔서 감사합니다. 나는 그것을 모두 사용했다. – one1day

0

ajax 호출이 비동기임을 유의하십시오. dur_time_formated가 for-loop 다음에 설정 될 것임을 의미합니다. 그래서 문제를 해결하기 위해 루프 밖에서 배열 변수를 사용하거나 Ajax 요청을 동기화 할 수 있습니다.

+0

먼저 답변 해 주셔서 감사합니다. var를 사용하는 대신에 dur_time_formated = ''; , 나는 var를 사용해야한다. dur_time_formated = new Array(); 또는 간단한 var dur_time_formated = []; – one1day

+0

실제 데이터가 없어도 정확하게 말할 수있는 것은 약간 복잡합니다. 두 번째 아약스 요청이 동 기적으로 이루어지면 더 좋을 것입니다. 요청이 끝나면 알 수 없으므로 언제 개체를 사용할 수 있는지 알 수 없습니다. – Aray

관련 문제