在jQuery中,我將表單提交給服務器。當出現驗證錯誤時,我從服務器收到400錯誤,並且文檔正文爲有效的JSON。我想知道如何訪問從服務器返回的數據。如何通過jQuery.Ajax訪問JSON響應400錯誤?
jQuery.Ajax對象的我的.error回調函數永遠不會被調用,所以我使用.statusCode {400}函數。這運行得很好,但是沒有任何參數包含響應主體。
在jQuery中,我將表單提交給服務器。當出現驗證錯誤時,我從服務器收到400錯誤,並且文檔正文爲有效的JSON。我想知道如何訪問從服務器返回的數據。如何通過jQuery.Ajax訪問JSON響應400錯誤?
jQuery.Ajax對象的我的.error回調函數永遠不會被調用,所以我使用.statusCode {400}函數。這運行得很好,但是沒有任何參數包含響應主體。
如果HTTP狀態不是2xx,某些瀏覽器的XHR實現拒絕提供響應主體。我不得不在API設計中使用的我無法控制客戶端的東西是做一些事情,比如總是返回200,並以某種其他方式指示成功/失敗/狀態(例如,作爲JSON中的頂級屬性響應)。
你在說什麼瀏覽器? – Relequestual 2014-02-13 15:32:07
我在回調中使用statusCode沒有問題,但是,statusCode作爲回調函數不是返回任何數據。
我想你應該嘗試如何處理驗證錯誤在服務器端,返回狀態碼200不同的方法,但像「ERROR_COUNT」的參數,並從那裏走。
你可以發佈一些你正在使用的代碼(只是$ .ajax你正在使用...)?
我嘗試獲取狀態爲400的json響應,它適用於IE7,8和9,Firefox和Chrome(Safari未經測試)。
...
error: function(xhr) {
error(xhr.responseText);
}
...
這是我找到的最好的答案,可以很容易地擴展到解析JSON響應並使用它的屬性: '''error:function(xhr){toStr.info(JSON.parse(xhr。 responseText的).error); }''' – hamx0r 2017-12-12 15:57:13
對我來說器(Chrome),在XHR響應的responseText屬性只包含「錯誤的請求」時的StatusCode爲400史蒂芬感謝您的答覆;由於在Postman中我可以得到我從REST控制器返回的json數據,但是在jQuery Ajax響應中找不到它,所以我一直在努力。
這是爲了答案嗎?你的答案的後半部分應該是一個評論。 – 2016-09-20 21:45:43
如果請求不好,你不需要發送更多的主體內容。是的,我知道這可能是可取的,告訴*爲什麼*這是壞的,或其他一些不錯的數據。 – zzzzBov 2012-01-12 22:03:08