2012-05-25 36 views
1

我有一個簡單的ajax請求data-type: 'script'當狀態代碼失敗時,爲什麼jQuery不會評估來自ajax腳本的響應

如果響應的狀態碼是200,那麼返回的javascript會被正確執行。如果是像500或403這樣的錯誤代碼,則不執行任何執行。

我重新讀取DOC 3次:

「腳本」:評估響應,如JavaScript和返回純文本 。 ...

這並沒有說明它是成功或任何其他條件的條件。因爲我的服務器響應的是「text/javascript」的響應類型,所以我會假設jQuery會處理該內容類型(即評估它),即使它響應了'500'狀態代碼(即「嘿,我不能做你要求我做的事情「)

這是jQuery的問題嗎?或者這是預期的行爲,文件不完整?

+2

聽起來合理的給我。爲什麼它會嘗試執行狀態爲500或403的事情?它應該假定服務器無法通過腳本進行響應。 – bfavaretto

+0

*'沒有成功'或任何其他條件。'* - 你是什麼意思?在jQuery中,您可以爲任何Ajax請求定義「成功」和「錯誤」處理程序。 –

+1

試試'$ .getScript()' –

回答

1

從版本1.5開始,ajax調用返回一個延遲對象。

所以,你可以使用

$.ajax({/*options*/}) 
    .done(function(data, status, jqxhr){ alert("$.ajax completed!"); }) 
    .fail(function(jqxhr, settings, exception){ alert("$.ajax failed!"); }); 

實際腳本將被評估被稱爲前.done方法,當一個成功的請求時

相關問題