具有非 200 个响应的 jQuery ajax

标签 jquery ajax

如何让 success* 触发所有状态代码?

$.ajax({
    url: "/"
    , dataType: 'json'
    , type: 'POST'
    success: function (data) {
        alert('all good');
    }
});

* 注意,我不在乎它是否触发“成功”方法,我只想将响应实体解析为 JSON。

我的 400 响应实体可能是一些 JSON,其中包含有关为什么它是错误请求的详细信息,是否有一些设置可以使此功能与 jQuery 开箱即用?还是我必须用手卷这个?

谢谢

最佳答案

使用complete: function () { },而不是success。在这种情况下,生成的数据不会由 jQuery 解析,但您可以通过对 XHR 对象的 responseText 执行 $.parseJSON() 来自行解析:

$.ajax({
    url: "/"
    , dataType: 'json'
    , type: 'POST'
    complete: function (xhrObj) {
        var data = $.parseJSON(xhrObj.responseText || "");
        alert('all good');
    }
});

关于具有非 200 个响应的 jQuery ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884286/

相关文章:

javascript - 用 JavaScript 或 jQuery 修改 CSS 规则?

javascript - 手动添加浏览器历史记录条目(跨浏览器)

jquery - <a>标签点击和页面重新加载时,如何更改<li>标签的背景?

php - 到达json中的php数组元素

php - 服务器即时创建文件供客户端保存

javascript - Bootstrap Modal 中的动态内容

javascript - 在更改事件上为现有 javascript 代码添加值

mysql - 如何在没有 CFadmin 访问权限的情况下远程调试 Coldfusion AJAX 应用程序?

javascript - Js 在 Rails 中渲染部分的正确位置

javascript - 为我的 XMLHttpRequest 文件上传添加文件大小限制