jQuery的Ajax – 如何获取错误的响应数据

我有一个简单的Web应用程序。 我已经创build了服务器REST API,因此它将返回带有HTTP代码和JSON(或XML)对象的响应,其中包含更多详细信息:应用程序代码(特定于场景,描述发生的事情的消息等)。

因此,例如,如果一个客户端发送一个注册请求,并且密码太短,响应HTTP代码将是400(错误请求),响应数据将是: {appCode : 1020 , message : "Password is too short"}

在jQuery中,我使用“ajax”函数来创build一个POST请求。 当服务器返回与HTTP代码200(OK)不同的东西时,jQuery将其定义为“错误”。

error handling程序可以得到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控制台,似乎响应是空的。 当使用RESTtesting工具调用相同的请求时,我得到了一个响应,JSON对象就是它。

我究竟做错了什么?

以下是如何获取JSON数据的例子:

 $.ajax({ url: '/path/to/script.php', data: {'my':'data'}, type: 'POST' }).fail(function($xhr) { var data = $xhr.responseJSON; console.log(data); }); 

从文档 :

如果指定了json,则在将作为对象传递给成功处理程序之前,使用jQuery.parseJSONparsing响应。 parsing的JSON对象通过jqXHR对象的responseJSON属性可用。

否则,如果responseJSON不可用,则可以尝试$.parseJSON($xhr.responseText)

直接从文档

jQuery 1.5自$ .ajax()返回的jQuery XMLHttpRequest(jqXHR)对象是浏览器原生XMLHttpRequest对象的超集。 例如,它包含responseText和responseXML属性,以及一个getResponseHeader()

所以使用jqXRH参数,并获取它的responseText属性。

在上面的链接中,查找标题部分

jqXHR对象

花了这么多时间在这个问题上,我发现了这个问题。

该页面位于URL:www.mydomain.com/register
REST api位于URL:server.mydomain.com/rest下

好像这种POST不是那么简单。
我要去search更多的信息来更好地理解这个问题(如果你有更多的信息,请与我分享)。

在www.mydomain.com/rest下放置REST API时,一切正常。