gpt4 book ai didi

jquery - 连接丢失后,ajax 请求在 Chrome 中挂起

转载 作者:行者123 更新时间:2023-12-01 01:31:35 25 4
gpt4 key购买 nike

我注意到 google chrome 中有一些奇怪的行为:

  • 如果我们在没有网络连接时发送 post ajax 请求,我们会在控制台中收到 err_internet_disconnected 异常(我认为,这是可以的)
  • 如果我们发送长篇ajax请求并在此请求期间失去网络连接,谷歌浏览器不会中止它,控制台和devconsole的网络选项卡中没有err_internet_disconnected异常,该请求被标记为待处理(即使在连接出现后) 。事实上,这个连接挂起了,没有机会在 js 代码中处理它(我们期望得到 ajax 错误,但什么也没有发生)。

您对如何处理这种行为有什么建议吗?

编辑:代码示例:

$.ajax({
url: "https://someserver.com/ws.asmx/ExecuteEx?pureJson",
type: "POST",
contentType: "application/json",
data: data,
success: function() {
console.log("success");
},
error: function() {
console.log("error");
}
})

我在编辑这篇文章时在本页的 Chrome 开发控制台中尝试了此代码。截图如下。第一个请求是我的。我发送了,然后拔掉网线。第二次请求失败(因为未插入网线)。然后我插上网线,第三次请求就成功了。但第一个请求仍然处于待处理状态(尽管网络连接丢失)。

devconsole's network tab

最佳答案

设置超时属性。如果超时后连接丢失,则应中止请求。

$.ajax({
url: "https://someserver.com/ws.asmx/ExecuteEx?pureJson",
type: "POST",
contentType: "application/json",
data: data,
timeout: 1000, // value in milliseconds
success: function() {
console.log("success");
},
error: function() {
console.log("error");
}
})
<小时/>

另请参阅ajax documentation

timeout

Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available, it is possible for a request to time out before it can be sent.

关于jquery - 连接丢失后,ajax 请求在 Chrome 中挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685659/

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