jQuery的AJAX错误函数具有以下参数:
error(XMLHttpRequest, textStatus, errorThrown)
获得响应机构的最佳跨浏览方式是什么?
这是否有效(在所有浏览器中都可靠)?
$.ajax({
error: function(http) {
alert(http.responseText);
}
});
答案 0 :(得分:76)
从jQuery 1.4.1开始,你应该使用:
var json = JSON.parse(xhr.responseText);
答案 1 :(得分:20)
对于更近期和一般性的答案(因为jquery 1.5),我使用jqXHR
对象:
$.ajax(url).fail(function(jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
})
或者responseJSON
可用于获取已解析的响应主体
$.ajax(url).fail(function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR.responseJSON);
})
答案 2 :(得分:1)
jQuery的一个直接用法示例:
var url = '/';
$.get(url).then(
function(response) {
$("#result").html(response);
},
function(jqXHR) {
$("#result").html('Error occurred: '+ jqXHR.statusText + ' ' + jqXHR.status);
}
);
这应返回当前网站首页的HTML。
然后尝试输入一个不存在的无意义网址,并查看引发的错误。 你应该得到" 404 Not Found"来自网络服务器。测试它:JSFiddle here
答案 3 :(得分:-5)
有一个隐藏函数可以从XHR中提取数据:
var responseText = $.httpData(xhr)
如果您将"json"
作为第二个参数传递,它会将响应视为JSON字符串。
请注意,您可能会收到错误,因为没有响应(例如网络问题)。确保你也覆盖了这种情况。另外,我相信(不确定)如果服务器返回error
或4xx
状态,jQuery会调用5xx
处理程序。