【发布时间】:2012-03-22 11:29:38
【问题描述】:
jQuery 的 jqXHR 对象在失败时传递给回调不解析 json 响应,因此 responseJSON 未定义,只有 responseText 可用。
它适用于成功的请求,我正在使用 dataType: 'json' 设置正确的标头
呼叫:
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: post_data,
dataType: 'json',
done: done_callback,
fail: fail_callback,
always: always_callback
});
请求标头:
Accept:application/json, text/javascript, */*; q=0.01
X-Requested-With:XMLHttpRequest
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11
响应标头:
Content-Type:application/json;charset=utf-8
Status:500
响应文本:
{"status":"error","code":500,"message":"A system error occurred, please try again later"}
responseJSON 未定义
是不是jQuery响应ajax请求不成功时不解析json的情况? 我找不到任何文件来确认或否认这种行为(我可能只是不够努力)
我显然可以在fail 回调中使用parseJSON。
【问题讨论】:
-
你是对的。响应内容不是
evaled 错误。如果您在 500 错误时收到 JSON,只需自己解析即可。 -
是的。 @Arun 非常正确地向我指出了 jquery 已决定不通过类型转换器传递响应的确切行。
标签: jquery