gpt4 book ai didi

javascript - 随机 jquery ajax 错误 readyState=0

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:14:21 25 4
gpt4 key购买 nike

我有一个使用 jQuery ajax 获取一些数据的 Web 应用程序。在此站点中,我还有一个记录器,可在发生错误时向我报告。

我经常在 ajax 调用中遇到这个错误:

{"readyState":0,"responseText":"","status":0,"statusText":"error"}

问题是这个错误是随机的,我无法重现它。我为所有 ajax 脚本都得到了这个。该请求是在同一来源和我定义的服务器上发出的 "Access-Control-Allow-Origin", "*"

所有浏览器都会收到此错误:

  • Safari 9
  • Chrome
  • 互联网探索 11
  • 等...

jQuery ajax 代码:

$.ajax({
url: 'MyUrl',
type: 'POST',
dataType: "json",
data: {dataVars},
error: function(response, ajaxOptions, thrownError) {
log.error( 'StringError: ' + ajaxOptions + '\n\nthrownError: ' + JSON.stringify(thrownError) + '\n\nResponse: ' + JSON.stringify(response));

},
success: function(res){


}
});

请求是对一个 servlet 执行的。可能是什么问题?

最佳答案

来自 W3schools :

readyState=0

表示请求未发送。 (您的浏览器未连接到目标服务器)。

这意味着套接字未打开:没有 TCP 握手,因此目标 URL 未到达...

因此检查 myUrl 的有效性(它是一个好的域吗?没有跨源),以及客户端的连接(代理?如果 myUrl 是安全的/使用其他端口,也许它只是没有打开......)

我认为问题可能出在服务器端,如果它是随机的。但特别是对于 myUrl,如果您无论如何都可以获取网页...

但是错误很奇怪,如果来自同一个服务器!

无论如何,我认为这是因为你的客户端和目标服务器之间的连接不稳定,所以也许你可以尝试增加请求的超时时间,或者在错误时重试(递归循环的例子):

var remainingRetry = 3; //or something else
function handleRequest()
{
$.ajax({
url: 'MyUrl',
type: 'POST',
dataType: "json",
data: {dataVars},
error: function(response, ajaxOptions, thrownError) {
if (remainingRetry)
 {
remainingRetry--;
setTimeout(handleRequest, 1000); //timeout between two tries
}

else log.error( 'StringError: ' + ajaxOptions + '\n\nthrownError: ' + JSON.stringify(thrownError) + '\n\nResponse: ' + JSON.stringify(response));

},
success: function(res){


}
});
}

关于javascript - 随机 jquery ajax 错误 readyState=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38498408/

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