【发布时间】: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 响应,其中包含结构化方式的错误信息。
-
干杯,正是我希望得到的建议