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时,一切正常。