2015-07-20 53 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;