2012-11-24 58 views
0

我有幾個要求是這樣的:jQuery的AJAX請求不返回(無HTTP狀態代碼),並保持掛起

$('#some-button').on('click', function(e) { 
     e.preventDefault(); 
     $this = $(this); 
     $.ajax({ 
     url: 'some_request.php/?q='+$some_id, 
     dataType: 'json', 
     success: function(data) { 
      alert('success!') 
     }   
     }); 
    }); 

即大量按鈕點擊啓動的AJAX請求。根據Chrome,此請求保持「待定」狀態 - 無JS警報。沒有HTTP響應代碼返回。我認爲它只是坐在那裏等着迴應而沒有得到它。

問題類似於:jquery $.ajax request remains pending但答案沒有幫助。我的PHP或HTML代碼中無處使用會話。

任何想法?非常感謝。

+1

嘗試在'$ .ajax'中設置'timeout'選項。我猜是服務器端代碼問題,它不返回500狀態 – charlietfl

+0

好吧,我確實得到一個超時..我該怎麼辦?等待一段時間後重新發送請求? – ale

+1

可能是需要調試的服務器代碼問題。也可以添加一些AJAX錯誤處理。請參閱文檔。還要檢查瀏覽器控制檯中的請求,以確保已定義'$ some_id'並正在發送 – charlietfl

回答

0

您確定您要求的Php文件位於同一個域中嗎?通常,這在跨域Ajax調用時發生,這是大多數Web瀏覽器所不允許的。如果是這種情況,你必須嘗試jsonp。這裏有一個很好的實際解釋與例子:http://www.jquery4u.com/json/jsonp-examples/

+0

PHP文件絕對是本地的。 – ale

2

我認爲你需要一個jQuery的Ajax錯誤處理函數。那就是:

// jQuery Ajax Error Handling Function 
$.ajaxSetup({ 
    error: function(jqXHR, exception) { 
     if (jqXHR.status === 0) { 
      alert('Not connect.\n Verify Network.'); 
     } else if (jqXHR.status == 404) { 
      alert('Requested page not found. [404]'); 
     } else if (jqXHR.status == 500) { 
      alert('Internal Server Error [500].'); 
     } else if (exception === 'parsererror') { 
      alert('Requested JSON parse failed.'); 
     } else if (exception === 'timeout') { 
      alert('Time out error.'); 
     } else if (exception === 'abort') { 
      alert('Ajax request aborted.'); 
     } else { 
      alert('Uncaught Error.\n' + jqXHR.responseText); 
     } 
    } 
}); 

現在叫你的Ajax功能:

$.ajax({ 
    url: 'some_request.php/?q=' + $some_id, 
    dataType: 'json', 
    success: function(data) { 
     alert('success!') 
    } 
}); 

並檢查什麼樣的錯誤你得到。

相關問題