jquery 正在获取 AJAX 响应正文以用于错误回调

xggvc2p6  于 2022-12-18  发布在  jQuery
关注(0)|答案(5)|浏览(133)

jQuery的 AJAX 错误函数具有以下参数:

error(XMLHttpRequest, textStatus, errorThrown)

获取响应主体的最佳跨浏览器方法是什么?
这是否有效(在所有浏览器中都可靠)?

$.ajax({
  error: function(http) {
    alert(http.responseText);
  }
});
czfnxgou

czfnxgou1#

从jQuery 1.4.1开始,您应该用途:

var json = JSON.parse(xhr.responseText);

参见http://api.jquery.com/jQuery.parseJSON/

mbzjlibv

mbzjlibv2#

对于更近的和更一般的答案(从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);
})
wfveoks0

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

fnx2tebb

fnx2tebb4#

请记住,如果响应未通过CORS校验,则不会获得正文

rpppsulh

rpppsulh5#

有一个隐藏函数可以从XHR示例中提取数据:

var responseText = $.httpData(xhr)

如果您传递"json"作为第二个参数,它会将响应视为JSON字符串。
请注意,您可能会因为没有响应而得到一个错误(例如网络问题)。请确保您也涵盖了这种情况。此外,我相信(不确定)如果服务器返回4xx5xx状态,jQuery会调用error处理程序。

相关问题