jQuery的 AJAX 错误函数具有以下参数:
error(XMLHttpRequest, textStatus, errorThrown)
获取响应主体的最佳跨浏览器方法是什么?这是否有效(在所有浏览器中都可靠)?
$.ajax({ error: function(http) { alert(http.responseText); } });
czfnxgou1#
从jQuery 1.4.1开始,您应该用途:
var json = JSON.parse(xhr.responseText);
参见http://api.jquery.com/jQuery.parseJSON/。
mbzjlibv2#
对于更近的和更一般的答案(从jquery 1.5开始),我会使用jqXHR对象:
jqXHR
$.ajax(url).fail(function(jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); })
或者,可以使用responseJSON来获取已解析的响应主体
responseJSON
$.ajax(url).fail(function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.responseJSON); })
wfveoks03#
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”从Web服务器。测试它:JSF中间件here
fnx2tebb4#
请记住,如果响应未通过CORS校验,则不会获得正文
rpppsulh5#
有一个隐藏函数可以从XHR示例中提取数据:
var responseText = $.httpData(xhr)
如果您传递"json"作为第二个参数,它会将响应视为JSON字符串。请注意,您可能会因为没有响应而得到一个错误(例如网络问题)。请确保您也涵盖了这种情况。此外,我相信(不确定)如果服务器返回4xx或5xx状态,jQuery会调用error处理程序。
"json"
4xx
5xx
error
5条答案
按热度按时间czfnxgou1#
从jQuery 1.4.1开始,您应该用途:
参见http://api.jquery.com/jQuery.parseJSON/。
mbzjlibv2#
对于更近的和更一般的答案(从jquery 1.5开始),我会使用
jqXHR
对象:或者,可以使用
responseJSON
来获取已解析的响应主体wfveoks03#
jQuery的一个简单用法示例:
这应该返回当前网站首页的HTML。
然后尝试输入一个不存在的无意义的网址,看到抛出的错误。你应该得到“404 Not Found”从Web服务器。测试它:JSF中间件here
fnx2tebb4#
请记住,如果响应未通过CORS校验,则不会获得正文
rpppsulh5#
有一个隐藏函数可以从XHR示例中提取数据:
如果您传递
"json"
作为第二个参数,它会将响应视为JSON字符串。请注意,您可能会因为没有响应而得到一个错误(例如网络问题)。请确保您也涵盖了这种情况。此外,我相信(不确定)如果服务器返回
4xx
或5xx
状态,jQuery会调用error
处理程序。