2010-10-31 60 views
49

感謝StackOverflow,我設法讓下面的代碼完美工作,但我有一個後續問題。jQuery .get錯誤響應函數?

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

上面的代碼使我的網站能夠在WordPress中使用Load More按鈕獲取第二頁文章。但是,當網站用完頁面/結果時,我遇到了一個小問題。加載更多按鈕保持原位。即使沒有剩餘頁面,它也會繼續嘗試獲取數據。

如何調整此命令,以便在.get請求失敗或(404)找不到頁面時顯示可視響應?

如果有人能幫助我的甚至alert("woops!");一個簡單的例子,這將是真棒!

謝謝!

+0

$ .ajaxSetup函數的工作般的魅力,其$最好的選擇得到 - http://stackoverflow.com/questions/2175756/how-to-handle-error-in-get – BetaCoder 2014-01-13 14:16:28

回答

133

$.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 
    } 
}); 

編輯三月'10

需要注意的是,在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 
}); 
+0

你不必須這樣做,還有其他替代方法可以使用'.ajaxSetup()'和'ajaxError'全局事件。 – 2010-10-31 09:10:52

+0

確實有。 – lonesomeday 2010-10-31 09:15:12

+0

該解決方案更直觀與更新與jQuery 1.5 +'.error'版本 – 2011-03-31 14:32:29

30

如果你想要一個通用的錯誤,你可以設置所有$.ajax()(其中$.get()使用下面)請求jQuery讓顯示使用$.ajaxSetup()的錯誤,例如:

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

一旦作出任何AJAX調用之前,只要運行這個(沒有更改當前的代碼,在什麼地方只要堅持這一點) 。這臺error選項默認到處理器/功能上面,如果你做了充分的$.ajax()電話和指定的error處理你不得不將覆蓋上面又是什麼。

+0

不工作,我得到這樣的警告:一個AJAX出錯:錯誤 錯誤: – 2013-10-28 22:09:02

11

您可以通過使用responseText屬性獲取詳細的錯誤。

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

也適用於jQuery的3.1.X – keesp 2017-08-16 17:23:08