jQuery的AJAX错误函数具有以下参数:获得Ajax响应体在错误回调使用
error(XMLHttpRequest, textStatus, errorThrown)
什么是最好的跨浏览器的方式来获得响应主体?
这项工作(可靠地在所有浏览器中)吗?
$.ajax({
error: function(http) {
alert(http.responseText);
}
});
jQuery的AJAX错误函数具有以下参数:获得Ajax响应体在错误回调使用
error(XMLHttpRequest, textStatus, errorThrown)
什么是最好的跨浏览器的方式来获得响应主体?
这项工作(可靠地在所有浏览器中)吗?
$.ajax({
error: function(http) {
alert(http.responseText);
}
});
有一个隐藏的功能,可以从XHR istance提取数据:
var responseText = $.httpData(xhr)
如果传递"json"
作为第二个参数它将把响应作为JSON字符串。
请注意,您可能会收到错误,因为没有响应(例如网络问题)。确保你也覆盖了这种情况。此外,我相信(不知道),如果服务器返回4xx
或5xx
状态,jQuery调用error
处理程序。
在jQuery 1.4.1你应该使用:
var json = JSON.parse(xhr.responseText);
对于一个更近的和一般的答案(因为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);
})
jQuery的一个简单使用示例:
var url = '/';
$.get(url).then(
function(response) {
$("#result").html(response);
},
function(jqXHR) {
$("#result").html('Error occurred: '+ jqXHR.statusText + ' ' + jqXHR.status);
}
);
这应该返回当前网站首页的HTML。
然后尝试输入不存在的无意义URL并查看引发的错误。 您应该从Web服务器上获得“404 Not Found”。测试它:JSFiddle here
http.responseText适用于所有现代浏览器,并且所有4xx和5xx HTTP状态错误都会触发错误处理程序。 您可以通过检查可访问的HTTP状态代码来改变错误处理,如'http.status' – 2010-01-18 18:29:12