jquery ajax 失败时不解析 json

标签 jquery

失败时传递给回调的 jQuery 的 jqXHR 对象不会解析 json 响应,因此,responseJSON 未定义,只有 responseText 可用。

它对于成功的请求效果很好,我使用 dataType: 'json' 设置正确的 header

调用:

  $.ajax({
    type: 'POST',
    url: $form.attr('action'),
    data: post_data,
    dataType: 'json',
    done: done_callback,
    fail: fail_callback,
    always: always_callback
  });

请求 header :

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

响应 header :

Content-Type:application/json;charset=utf-8
Status:500

响应文本:

{"status":"error","code":500,"message":"A system error occurred, please try again later"}

responseJSON 未定义

是否存在响应ajax请求不成功时jQuery不解析json的情况? 我找不到任何文档来确认或否认这种行为(我可能只是没有仔细寻找)

我显然可以在 fail 回调中使用 parseJSON

最佳答案

我研究了 jQuery ajax 回调方法。它执行 dataType仅当 ( status >= 200 && status < 300 || status === 304 ) 时才转换是真的;否则,响应将被传递到相应的处理程序。也就是说,如果请求失败,则不会按照预期的 dataType 解析响应。 .

如果您想了解更多信息,可以在 jquery.js 文件中查找上述条件并查看其工作情况。

关于jquery ajax 失败时不解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9821396/

相关文章:

javascript - 当用户使用 jQuery 滚动时在不同的 div 中触发滚动事件

javascript - 使用 javascript 从输入类型 url 获取并加载图像

javascript - DOM 事件不会在 off-DOM 元素中冒泡

javascript - 我如何在页面加载本身的依赖下拉列表中加载默认国家、州和城市?

jquery 移动导航栏和 ListView 项目有时会出现圆角

jquery - Request.IsAjaxRequest 在 MVC3 中永远不会返回 true

javascript - 如何使用 jinja2 和 google app engine 将数组放入属性中以供 javascript 读取

javascript - 未捕获的 TypeError 对象 [对象对象] 没有方法 'datepicker'

javascript - Twitter 按钮无法正确发推文

javascript - JQM动态弹窗