我有一个 RESTful 应用程序,它在遇到应用程序错误时返回带有 JSON 编码响应正文的 HTTP 400:
Request URL: http://.../middleware.php/entity/23.json?padding=jQuery20305847647329799524_1380182255277&_=1380182255278
Request Method: GET
Status Code: HTTP/1.1 400 Bad Request
Server: Apache/2.2.14 (Ubuntu)
Date: Thu, 26 Sep 2013 07:57:36 GMT
Content-Type: application/json
Content-Length: 133
根据 FF,响应正文是有效的 JSONP:
jQuery20305847647329799524_1380182255277({"version":"0.2","exception":{"message":"Invalid UUID: '23'","type":"Exception","code":0}});
我正在尝试处理失败:
$.getJSON("http://demo.volkszaehler.org/middleware.php/entity/23.json?padding=?").fail(
function(jqXHR, textStatus, errorThrown) {
console.error(JSON.stringify(jqXHR));
console.error(jqXHR.responseText);
}
);
不幸的是,jqXHR 在 FF25 和 Chrome 上都只有以下属性:
{"readyState":4,"status":404,"statusText":"error"}
responseText 本身显示为""
,我无法解码动作 JSON 响应正文。
如何在fail()
方法中解析实际的 JSON 响应正文?
注意:我已经看到使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为“jsonp”的 $.ajax)错误?但这似乎与捕获错误有关,而不是与处理错误响应内容有关。