如何使用jQuery.Ajax访问400错误的JSON响应
How do I access the JSON response with jQuery.Ajax for a 400 error?
在jQuery中,我向服务器提交表单。当出现验证错误时,我从服务器收到一个400错误,并且文档的主体是有效的JSON。我想知道如何访问从服务器返回的数据。
我在jQuery.Ajax对象上的.error回调函数从未被调用,所以我使用.statusCode{400}函数。这运行得很好,但是没有一个参数包含响应体。
我试图获得状态为400的json响应,它适用于IE7,8和9、Firefox和Chrome(Safari未测试)。
...
error: function(xhr) {
error(xhr.responseText);
}
...
如果HTTP状态不是2xx,一些浏览器的XHR实现将拒绝提供响应体。在API设计中,当我无法控制我的客户时,我不得不求助于做一些事情,比如总是返回200,并以其他方式指示成功/失败/状态(例如,作为JSON响应中的顶级属性)。
我在回调中使用statusCode没有遇到任何问题,但是,statusCode作为回调函数不会返回任何数据。
jQuery.Ajax
我认为您应该尝试一种不同的方法来处理服务器端的验证错误,返回状态代码200,但使用类似"error_count"的参数,然后从那里开始。
你能发布一些你正在使用的代码吗(你只使用$.ajax…)?
对于我(Chrome)来说,当statusCode为400时,xhr响应的responseText属性只包含"BAD REQUEST"。感谢史蒂文的回复;我一直在努力解决这个问题,因为在Postman中,我可以获得从REST控制器返回的json数据,但在jQueryAjax响应中找不到。
"如果指定了json,则在将响应作为对象传递给成功处理程序之前,将使用jQuery.parseJSON解析响应。解析的json对象通过jqXHR对象的responseJSON属性可用。"
http://api.jquery.com/jquery.ajax/
如果您使用问题中提到的statusCode
指定回调:
"如果请求成功,状态代码函数采用与成功回调相同的参数;如果它导致错误(包括3xx重定向),它们采用与错误回调相同的值。"(jqXHR,textStatus,errorThrown)
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- AJAX语法错误:JSON.parse:意外字符
- 错误:JSON分析错误:使用角度转换时,属性名称必须是字符串文字
- Json响应错误Json.parse:意外的数据结束错误
- json错误json.parse:意外的数据结束错误
- 语法错误:JSON.parse:意外字符
- 语法错误:JSON 分析错误:意外的标识符“对象”
- 语法错误:JSON.parse:意外的数据结束
- 错误:“JSON.parse:JSON 数据第 1 行第 1 列的意外字符”,当包含其他 php 文件时
- 我有一个有效的 JSON,但我不断收到“语法错误 json.parse 第 1 行意外的数据结尾”
- 错误 JSON 响应中出现意外的令牌<
- 错误 JSON.parse 使用 ajax con pusher PHP
- 错误JSON未定义
- 未捕获的语法错误:JSON.parse上出现意外的标记o
- 无法识别字段-未标记为可忽略错误-JSON-Java对象
- 解析JSON通过javascript得到错误:JSON.解析:意想不到的人物
- 语法错误:JSON 中位置 1 处出现意外的标记 o
- Sencha触摸-错误- JSON恢复
- Sharepoint Check In Rest API错误'JSON流格式不佳'