2012-01-12 46 views
8

在jQuery中,我將表單提交給服務器。當出現驗證錯誤時,我從服務器收到400錯誤,並且文檔正文爲有效的JSON。我想知道如何訪問從服務器返回的數據。如何通過jQuery.Ajax訪問JSON響應400錯誤?

jQuery.Ajax對象的我的.error回調函數永遠不會被調用,所以我使用.statusCode {400}函數。這運行得很好,但是沒有任何參數包含響應主體。

+0

如果請求不好,你不需要發送更多的主體內容。是的,我知道這可能是可取的,告訴*爲什麼*這是壞的,或其他一些不錯的數據。 – zzzzBov 2012-01-12 22:03:08

回答

7

如果HTTP狀態不是2xx,某些瀏覽器的XHR實現拒絕提供響應主體。我不得不在API設計中使用的我無法控制客戶端的東西是做一些事情,比如總是返回200,並以某種其他方式指示成功/失敗/狀態(例如,作爲JSON中的頂級屬性響應)。

+7

你在說什麼瀏覽器? – Relequestual 2014-02-13 15:32:07

1

我在回調中使用statusCode沒有問題,但是,statusCode作爲回調函數不是返回任何數據。

jQuery.Ajax

我想你應該嘗試如何處理驗證錯誤在服務器端,返回狀態碼200不同的方法,但像「ERROR_COUNT」的參數,並從那裏走。

你可以發佈一些你正在使用的代碼(只是$ .ajax你正在使用...)?

3

我嘗試獲取狀態爲400的json響應,它適用於IE7,8和9,Firefox和Chrome(Safari未經測試)。

... 
error: function(xhr) { 
    error(xhr.responseText); 
} 
... 
+0

這是我找到的最好的答案,可以很容易地擴展到解析JSON響應並使用它的屬性: '''error:function(xhr){toStr.info(JSON.parse(xhr。 responseText的).error); }''' – hamx0r 2017-12-12 15:57:13

0

對我來說器(Chrome),在XHR響應的responseText屬性只包含「錯誤的請求」時的StatusCode爲400史蒂芬感謝您的答覆;由於在Postman中我可以得到我從REST控制器返回的json數據,但是在jQuery Ajax響應中找不到它,所以我一直在努力。

+0

這是爲了答案嗎?你的答案的後半部分應該是一個評論。 – 2016-09-20 21:45:43