2012-12-03 35 views
0

如何檢查並等待服務器滯後的保存功能來完成,它返回一個Ajax對象jqxhr,我要檢查,如果Ajax請求是否完成我做別的事情之前。如何使用延遲值檢查ajax是完成還是失敗?

注:保存功能已經成功,完全錯誤等。我想,以確保其完成之前,我做任何事情,使我dotn得到了一個未定義當我使用jqxhr.status。

$(document).ready(function() { 
     $(function() { 
      $("#save").click(function() { 

      save().then(function(jqxhr){// check status... 


        alert(" jqxhr status " + jqxhr.status); <--getting undefined first 
        //200 for success 
        var stat = jqxhr.status; 
        //alert(" inside 200 status "+stat); 
        if (stat == 200) { 
         console.log("inside 200"); 

         alert(" inside 200 status " + stat); 

        } 
        if (stat == 400) { 
         console.log("inside 400"); 
         alert(" inside 400 status " + stat); 

        } else { 

         alert(" inside 200 status " + stat); 
        } 

       }); 

      }); 
     }); 
    });​ 
+0

只是習慣了這樣的事實:這是** async **調用。你需要相應地處理它。你*可以*使xhr請求阻止呼叫... **但是**我根本不會推薦,因爲它在等待時凍結UI。 – poncha

+1

你爲什麼要調用'save()'兩次? –

+0

我需要得到的jqxhr狀態的值保存函數返回jqxhr對象。我願意提出建議..我只想在完全完成ajax請求後才執行if語句。如何等待或知道Ajax請求是complete..if我嘗試打印jqxhr.status年初我得到了一個未定義,sicne阿賈克斯尚未完成 – user244394

回答

0

保存()函數(它實際上只是一個AJAX調用)返回一個承諾,所以你可以使用則(),以鏈代碼:

save().then(function(jqxhr){// check status...}); 
+0

它與傳遞成功和失敗回調有什麼不同?一旦鏈接結束在這裏,你回到外面的代碼,它是怎麼回事Ajax請求返回之前進行... – poncha

+0

@poncha好吧,我會刪除我的答案,因爲我其實並不清楚背後究竟是保存() – Christophe

+0

取消刪除我的答案,因爲現在問題包含save()函數。 – Christophe

相關問題