我的网页通过AJAX调用将数据加载到其中,除非您在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
statusText:“错误”
现在为了增加更多的复杂性,我看到一些其他帖子建议检查readyState或状态是否大于0.所以我决定做一个测试,在那里我加载了网页,停止了网络服务器运行并再次运行AJAX。不幸的是,它返回了完全相同的细节。
因此,我基本上需要一些建议来获取有用的错误消息,在没有错误时不会触发。
答案 0 :(得分: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;