【问题标题】:Should I use HTTP response codes to fire jQuery's ajax error callback?我应该使用 HTTP 响应代码来触发 jQuery 的 ajax 错误回调吗?
【发布时间】:2012-08-17 01:12:07
【问题描述】:

我使用 cmlenz 的 jquery-iframe-transport 构建了一个文件上传器。 在 $.ajax 调用中,我想通过错误回调处理错误。 这可以通过让服务器发送带有我的错误消息的 HTTP 错误代码(4xx 或 5xx)来完成。

$.ajax({
    url: '/upload',
    error: function(jqXHR, textStatus, errorThrown){
        // Handle error here
    }
});

另一种方法是解析成功回调,检测错误并随后处理它。

 $.ajax({
    url: '/upload',
    success: function(data, textStatus, jqXHR){
        if(data && data.hasOwnProperty('error') {
            // Handle error here
        }
    }
});

基本上我的问题是我应该在服务器端操纵 HTTP 响应代码,以便我可以轻松地在客户端处理错误吗?当涉及到 HTTP 错误代码和 ajax 时,所有浏览器的行为是否都相同?或者这只是违反了滥用 HTTP?

【问题讨论】:

  • 这有点主观,但我已经开始为我的所有 API 使用 HTTP 错误代码。它似乎更惯用,更便携。可移植是指错误代码受规范约束,因此更容易记录和使用。而自定义的东西只会对你的 API 有意义。
  • 浏览器兼容性如何?当所有浏览器从服务器接收到 HTTP 错误代码时,它们的行为是否相同?根据 HTTP 中的标准,您可以发送带有这些错误代码的正文内容吗?
  • 我认为您将从几乎所有现代浏览器中获得非常相似的结果。而且由于您使用的是 jQuery,因此使用错误回调不会有任何问题。至于包含数据...是的,您可以包含一个正文,事实上,HTTP 规范鼓励您这样做。我通常包含一个 JSON 响应,其中包含结构化方式的错误信息。
  • 干杯,正是我希望得到的建议

标签: jquery ajax http


【解决方案1】:

HTTP 错误是正确的事情,但是they won't work with the <iframe> transport

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    相关资源
    最近更新 更多