jQuery .get错误响应函数?

时间:2010-10-31 08:12:15

标签: jquery

感谢StackOverflow,我设法让以下代码完美运行,但我有一个跟进问题。

$.get('http://example.com/page/2/', function(data){ 
  $(data).find('#reviews .card').appendTo('#reviews');
});

上面的代码使我的网站能够在WordPress中使用“加载更多”按钮获取第二页文章。但是,当网站用完页面/结果时,我遇到了一个小问题。加载更多按钮保持不变。即使没有剩余页面,它也会继续尝试获取数据。

我如何调整此命令,以便在.get请求失败或是(404)未找到页面时显示可视响应?

如果有人可以通过一个简单的例子来帮助我,即使alert("woops!");也很棒!

谢谢!

4 个答案:

答案 0 :(得分:164)

$.get没有为您提供设置错误处理程序的机会。您需要使用低级$.ajax函数:

$.ajax({
    url: 'http://example.com/page/2/',
    type: 'GET',
    success: function(data){ 
        $(data).find('#reviews .card').appendTo('#reviews');
    },
    error: function(data) {
        alert('woops!'); //or whatever
    }
});

编辑2010年3月

请注意,使用jQuery 1.5中的新jqXHR对象,您可以在调用$.get后设置错误处理程序:

$.get('http://example.com/page/2/', function(data){ 
    $(data).find('#reviews .card').appendTo('#reviews');
}).fail(function() {
    alert('woops'); // or whatever
});

答案 1 :(得分:33)

如果您想要一般性错误,可以设置所有$.ajax()$.get()下面使用的{{}}}请求jQuery使用$.ajaxSetup()显示错误,例如:

$.ajaxSetup({
  error: function(xhr, status, error) {
    alert("An AJAX error occured: " + status + "\nError: " + error);
  }
});

在进行任何AJAX调用之前只运行一次(不更改当前代码,只需在某处之前粘贴)。这会将error选项设置为默认到上面的处理程序/函数,如果您进行了完整的$.ajax()调用并指定了error处理程序,那么您拥有的将是什么覆盖以上。

答案 2 :(得分:13)

您可以使用responseText属性获取详细错误。

$.ajaxSetup({
error: function(xhr, status, error) {
alert("An AJAX error occured: " + status + "\nError: " + error + "\nError detail: " + xhr.responseText);
     } 
    });

答案 3 :(得分:0)

您可以链接.fail()回调以进行error响应。

$.get('http://example.com/page/2/', function(data){ 
   $(data).find('#reviews .card').appendTo('#reviews');
})
.fail(function() {
  //Error logic
})