簡體   English   中英

隨機jquery ajax錯誤readyState=0

[英]Random jquery ajax error readyState=0

我有一個 Web 應用程序,它使用 jQuery ajax 來獲取一些數據。 在這個站點中,我還有一個記錄器,它會在發生錯誤時向我報告。

我經常在 ajax 調用中遇到此錯誤:

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

問題是這個錯誤是隨機的,我無法重現它。 我為所有 ajax 腳本都得到了這個。 該請求是在同一來源上發出的,並且在我定義的服務器上"Access-Control-Allow-Origin", "*"

所有瀏覽器都會收到此錯誤:

  • 野生動物園 9
  • 互聯網探索 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){


        }
    });
}

我之前遇到過同樣的問題,就我而言,問題是

在我的第一個請求有機會完成之前重定向到另一個頁面的其他 js 函數實際上是在取消或終止我的請求

類似的東西

    function redirectToAnotherPageFn () {
          window.location = "/otherpage.html"; 
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM