随机jquery ajax错误readyState = 0

And*_*nia 5 javascript java ajax jquery

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

我经常在 ajax 调用时遇到此错误:

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

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

所有浏览器都会出现此错误:

  • 狩猎9
  • 铬合金
  • 探索互联网 11
  • ETC...

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){


        }
    });
Run Code Online (Sandbox Code Playgroud)

该请求是向 servlet 执行的。可能是什么问题呢?

Vin*_*ent 2

来自W3学校

\n\n
readyState=0\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n
var remainingRetry = 3; //or something else\nfunction handleRequest()\n{\n    $.ajax({\n        url: \'MyUrl\',\n        type: \'POST\',\n        dataType: "json",\n        data: {dataVars},\n        error: function(response, ajaxOptions, thrownError) {\n            if (remainingRetry)\n           \xc2\xa0{\n                 remainingRetry--;\n                 setTimeout(handleRequest, 1000); //timeout between two tries\n            }\n\n            else log.error( \'StringError: \' + ajaxOptions + \'\\n\\nthrownError: \' + JSON.stringify(thrownError) + \'\\n\\nResponse: \' + JSON.stringify(response));\n\n        },\n        success: function(res){\n\n\n        }\n    });\n}\n
Run Code Online (Sandbox Code Playgroud)\n