jQuery .get错误响应函数?

Sah*_*tta 67 jquery

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

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

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

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

如果有人可以用一个简单的例子来帮助我,即使是一个alert("woops!");非常棒的例子!

谢谢!

lon*_*day 170

$.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
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑2010年3月

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

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

  • 感谢使用jQuery 1.5+`.error`版本进行更新.正是我在寻找的东西. (14认同)

Nic*_*ver 33

如果你想要一个通用错误,你可以设置jQuery使用的所有$.ajax()($.get()使用下面的)请求$.ajaxSetup(),例如:

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

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


小智 13

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

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


Mah*_*bub 5

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

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