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
});
Run Code Online (Sandbox Code Playgroud)
请求标题:
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
Run Code Online (Sandbox Code Playgroud)
响应标题:
Content-Type:application/json;charset=utf-8
Status:500
Run Code Online (Sandbox Code Playgroud)
responseText的:
{"status":"error","code":500,"message":"A system error occurred, please try again later"}
Run Code Online (Sandbox Code Playgroud)
responseJSON未定义
是这样的情况,当对ajax请求的响应不成功时,jQuery不会解析json吗? 我找不到任何文件来确认或否认这种行为(我可能只是看起来不够努力)
我显然可以parseJSON在fail回调中使用.
Aru*_*hny 13
我看了一下jQuery ajax回调方法.dataType只有当它( status >= 200 && status < 300 || status === 304 )为真时才进行转换; 否则,响应将传递给相应的处理程序.也就是说,如果请求失败,则不会按预期解析响应dataType.
如果您想了解更多信息,可以在jquery.js文件中查找上述条件,看看它是否正常工作.
| 归档时间: |
|
| 查看次数: |
5667 次 |
| 最近记录: |