gpt4 book ai didi

JQuery $.ajax 在超时时调用成功方法,而不是错误,在 Safari 中运行

转载 作者:行者123 更新时间:2023-12-01 05:08:38 29 4
gpt4 key购买 nike

我注意到 Safari 中 jQuery 的这种奇怪行为。像这样设置调用后:

$.ajax( {
'url' : url,
'dataType' : 'json',
data : reqdata,
timeout: 20000, //10 secs of timeout
success : function(data, textStatus, XMLHttpRequest) {
console.log("success");
if ((data === null) || (data.length == 0)) {
ts.doAction( {
'actionName' : 'timeout',
'request' : {
'reqdata' : reqdata,
'actionName' : actionName,
'url' : url
},
'controller' : ts
});
}

ts.doAction( {
'actionName' : actionName,
'data' : data
});
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
console.log("error: " + textStatus);

if (textStatus == "timeout") {
ts.doAction( {
'actionName' : 'networkFailureError',
'request' : {
'reqdata' : reqdata,
'actionName' : actionName,
'url' : url
},
'controller' : ts
});
} else {
ts.doAction( {
'actionName' : 'serverError',
'request' : {
'reqdata' : reqdata,
'actionName' : actionName,
'url' : url
},
'controller' : ts
});
}
}
});

如果发生超时(我关闭本地网络服务器),将调用“成功”方法!不仅如此,在 textStatus 参数中还有一个带有“success”的字符串!!!错误处理程序甚至没有被调用......(正如您可能注意到的,我不得不告诉问题的唯一方法是检查数据参数是否为空或0长度......为什么会出现这种行为?如何才能我避免这个吗?

最佳答案

我也遇到同样的问题。

我发现这取决于超时时间。使用 chrome,对于小于 2000 毫秒的超时,一切都按预期工作,但对于更大的超时,不会调用成功处理程序。

关于JQuery $.ajax 在超时时调用成功方法,而不是错误,在 Safari 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3611286/

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