簡體   English   中英

如何使用 jQuery.Ajax 訪問 JSON 響應以獲取 400 錯誤?

[英]How do I access the JSON response with jQuery.Ajax for a 400 error?

在 jQuery 中,我將表單提交到服務器。 當出現驗證錯誤時,我會收到來自服務器的 400 錯誤,並且文檔正文是有效的 JSON。 我想知道如何訪問從服務器返回的數據。

我在 jQuery.Ajax 對象上的 .error 回調函數從未被調用,所以我使用 .statusCode{400} 函數。 這運行得很好,但是沒有一個參數包含響應正文。

如果 HTTP 狀態不是 2xx,一些瀏覽器的 XHR 實現會拒絕提供響應正文。 在 API 設計中我不得不求助於我無法控制我的客戶的是做一些事情,比如總是返回 200 並以其他方式指示成功/失敗/狀態(例如,作為 JSON 中的頂級屬性回復)。

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

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

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

jQuery.Ajax

我認為您應該嘗試一種不同的方法來處理服務器端的驗證錯誤,返回狀態代碼 200,但使用“error_count”之類的參數並從那里開始。

你能發布一些你正在使用的代碼嗎(只是你正在使用的 $.ajax ......)?

對於我(Chrome),當 statusCode 為 400 時,xhr 響應的 responseText 屬性僅包含“BAD REQUEST”。感謝 Steven 的回復; 我一直在為此苦苦掙扎,因為在 Postman 中我可以獲取從 REST 控制器返回的 json 數據,但在 jQuery Ajax 響應中找不到它。

“如果指定了 json,則響應在作為對象傳遞給成功處理程序之前使用 jQuery.parseJSON 進行解析。解析的 JSON 對象通過jqXHR 對象responseJSON 屬性提供。

http://api.jquery.com/jquery.ajax/

如果您使用問題中提到的statusCode指定您的回調:

“如果請求成功,狀態碼函數采用與成功回調相同的參數;如果導致錯誤(包括3xx重定向),它們采用與錯誤回調相同的參數。 ”(jqXHR,textStatus,errorThrown)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM