【发布时间】:2012-02-22 10:03:57
【问题描述】:
我有一个简单的网络应用程序。 我创建了服务器 REST API,因此它将返回带有 HTTP 代码和 JSON(或 XML)对象的响应,其中包含更多详细信息:应用程序代码(特定于场景、描述所发生情况的消息等)。
所以,比如客户端发送Register请求,密码太短,响应HTTP码为400(Bad Request),响应数据为:{appCode : 1020 , message : "Password is too short"}。
在 jQuery 中,我使用“ajax”函数来创建 POST 请求。当服务器返回不同于 HTTP 代码 200 (OK) 的内容时,jQuery 将其定义为“错误”。
错误处理程序可以获取3个参数:jqXHR、textStatus、errorThrown。 请问我可以获取服务器在错误情况下发送的JSON对象吗?
编辑:
1) 这是我的 JS 代码:
function register (userName, password) {
var postData = {};
postData["userName"] = userName;
postData["password"] = password;
$.ajax ({
dataType: "json",
type: "POST",
url: "<server>/rest/register",
data: postData,
success: function(data) {
showResultSucceed(data);
hideWaitingDone();
},
error: function (jqXHR, textStatus, errorThrown) {
showResultFailed(jqXHR.responseText);
hideWaitingFail();
}
})
}
2) 查看 Firebug 控制台时,响应似乎是空的。 当使用 REST 测试工具调用相同的请求时,我得到一个带有 JSON 对象的响应。
我做错了什么?
【问题讨论】:
-
如果你没有达到接受的答案;这段代码没有问题,问题出在其他地方。
-
对于其他未来的读者,我也有类似的问题,虽然跨域问题与我的情况完全无关,但事实证明问题出在服务器端。 (似乎服务器代码被破坏了,一些 HTTP 标头(如
Accept)的组合使其无法在 400 错误时返回正确的响应正文。)
标签: javascript jquery