![](/img/trans.png)
[英]jquery ajax readystate 0 responsetext status 0 statustext error
[英]Random jquery ajax error readyState=0
我有一個 Web 應用程序,它使用 jQuery ajax 來獲取一些數據。 在這個站點中,我還有一個記錄器,它會在發生錯誤時向我報告。
我經常在 ajax 調用中遇到此錯誤:
{"readyState":0,"responseText":"","status":0,"statusText":"error"}
問題是這個錯誤是隨機的,我無法重現它。 我為所有 ajax 腳本都得到了這個。 該請求是在同一來源上發出的,並且在我定義的服務器上"Access-Control-Allow-Origin", "*"
。
所有瀏覽器都會收到此錯誤:
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){
}
});
}
我之前遇到過同樣的問題,就我而言,問題是
在我的第一個請求有機會完成之前重定向到另一個頁面的其他 js 函數實際上是在取消或終止我的請求
類似的東西
function redirectToAnotherPageFn () {
window.location = "/otherpage.html";
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.