2015-07-20 37 views
0

我的網頁通過AJAX調用將數據加載到它中,除AJAX加載數據時嘗試從頁面導航離開頁面時,所有工作都很好。如果我導航離開頁面,它將觸發失敗功能,但是其中沒有數據,因此我只是收到一個提示框,指出「錯誤」。jQuery AJAX失敗函數 - 頁面導航出錯

我的代碼:

.fail(function (jqXHR, textStatus, errorThrown) { 
    console.log(jqXHR); 
    $('#ajaxloadergif').fadeOut(1000); 
    if (textStatus !== 'abort') { 
     alert(textStatus+'\n'+errorThrown);  
    }  
}); 

那的console.log吐出來的這些值對象:

的readyState:0
的responseText: 「」
狀態:0
狀態文本: 「error」

現在爲了增加更多的複雜性,我已經看到其他一些建議檢查readyState或status大於0的帖子。所以我決定做一個測試,在那裏我加載了網頁,停止了運行的web服務器並再次運行AJAX。不幸的是它返回了完全相同的細節。

所以我基本上需要一些建議來獲得有用的錯誤消息,當沒有錯誤時不會觸發。

+1

嘗試保存VAR內請求request = $ .ajax ......然後設置一個頁面上調用request.abort()的事件改變? – Vanojx1

+0

@ Vanojx1我實際上已經有了一個函數來取消你提到的所有當前的AJAX請求。我會嘗試。 –

+0

$(window).unload(function(){});可以是正確的事件 – Vanojx1

回答

0

感謝Vanojx1:

function CancelAJAX() { // Function to cancel all outstanding AJAX requests 
    $(AJAXRequest).each(function() { // Loop through all the requests 
     if (!this.Complete) { // If the request is not flagged as completed 
      this.Request.abort(); // Abort the request 
     } 
    }); 
    AJAXRequest = []; // Reset the AJAXRequest variable 
} 
window.onbeforeunload = function(event) { 
    CancelAJAX(); 
} 

被設置了:

var RequestIndex = AJAXRequest.length 
AJAXRequest[RequestIndex] = {}; 
AJAXRequest[RequestIndex].Complete = false; 
AJAXRequest[RequestIndex].Request = $.post(... 

這是在.done回調做:

AJAXRequest[RequestIndex].Complete = true;