gpt4 book ai didi

jquery - 当请求因我的服务器关闭而中止时,为什么 $.ajax 会调用成功处理程序?

转载 作者:行者123 更新时间:2023-12-03 23:05:05 25 4
gpt4 key购买 nike

当我关闭服务器并向其发出 ajax 请求时,firebug 显示该请求在发出请求后几秒钟被中止,并且我的 success 处理程序被调用。

为什么成功处理程序被调用,它不应该是错误处理程序吗?我怎样才能可靠地检测到它实际上并没有成功?

代码:

            $.ajax({
url: url,
type: "POST",
data: data,
dataType: "json",
success:function(data, statusText, xhr){
//gets called on success, or even when server is down.
},
error: function(){
//called if server returns error, but not if it doesn't respond
}
});

更新:此行为仅在本地主机上,当关闭我的开发服务器时会发生。我测试了当我尝试访问生产服务器但我的个人互联网离线时会发生什么,它只是挂起,根本没有调用成功或错误。我想我应该为这种情况设置超时属性。

最佳答案

我认为这是 jQuery 1.4.2 版本中的一个错误(?)。

我引用 jQuery documentation 的一条评论:

In 1.4.2 jquery doesn't call ajax error callback on timeout/connection error, to fix this: remove the trailing " || xhr.status === 0" from httpSuccess function

如果您确实想修改 jQuery 代码本身,请进行此操作。否则,您可以在成功回调中检查它,就像我在这里所做的那样:

$.ajax({
type: "POST",
url: "http://madeUpServerthatdoesnotExist.com/index.php",
data: "id=1",
success: function(msg){
if(this.xhr().status === 0 ){
errorHandler();
}
else {
alert('Success');
}
},
error: errorHandler
});

function errorHandler(){
alert('Freakin error');
}

似乎有点棘手,如果您知道更好的方法,请评论!

编辑:经过研究,我不确定这可能是 jQuery 中的错误,一旦我得到线索就会更新答案

关于jquery - 当请求因我的服务器关闭而中止时,为什么 $.ajax 会调用成功处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3055814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com