2016-07-21 83 views
0

我有一個使用jQuery ajax獲取一些數據的Web應用程序。在這個站點中,我還有一個記錄器,當發生錯誤時向我報告。隨機jquery ajax錯誤readyState = 0

非常頻繁,我得到的Ajax調用此錯誤:

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

的問題是,這個錯誤是隨機,我無法重現它。我得到這個所有的ajax腳本。請求是在相同的來源和我定義的服務器"Access-Control-Allow-Origin", "*"上進行的。

所有瀏覽器都得到這個錯誤:

  • Safari瀏覽器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。可能是什麼問題呢?

+0

您是否嘗試在服務器中調試請求?檢查你是否設法到達服務器?你會得到什麼狀態碼? –

回答

0

W3schools

readyState=0 

表示請求不被髮送。 (你的大衣沒有連接到目標服務器)。

它意味着套接字未打開:沒有TCP握手,所以只是沒有達到目標網址...

因此,檢查的myUrl有效性(這是一個好的域名沒有交叉?起源),也連接客戶端(代理?如果myUrl是安全的/使用其他端口,也許它只是沒有打開...)

我認爲這個問題可能在服務器端,如果它是隨機的。但特別是對於myUrl,如果你可以得到的網頁無論如何...

但錯誤是奇怪的,如果它來自同一臺服務器!

無論如何,我認爲那是因爲你的客戶端和目標服務器之間的連接是不穩定的,所以也許你可以嘗試inscrease請求超時或重試它的錯誤(遞歸循環爲例):

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


     } 
    }); 
} 
+0

我有Apache處理請求與代理傳遞從端口443到8080哪裏聽JBOSS。問題是「MyUrl」是相對的,如果它是錯誤的,問題不可能是隨機的......連接如何變得不穩定? –

+0

@AndreaCatania你是否通過代理得到這個網頁?否則,問題可能是代理本身... – Vincent

+0

如果您使用HTTP隧道,那麼...您的SSL證書是否被您的瀏覽器接受? – Vincent

相關問題