2010-07-27 68 views
12

我想在用戶發生AJAX錯誤時提醒用戶。您可以通過$.ajaxSetup做到這一點:

$.ajaxSetup({ 
    error: function() { 
    alert("OOPS!") 
    } 
}); 

But the jQuery docs recommend against this

注:全球的回調函數應該 與各自全球 阿賈克斯事件處理 方法-.ajaxStart(),.ajaxStop(集), .ajaxComplete(),.ajaxError(), .ajaxSuccess(),.ajaxSend() - 而不是 之內的設置對象 $ .ajaxSetup()。

所以我想我應該這樣做:

$("#some_random_div").ajaxError(function() { 
    alert("OOPS!") 
}); 

這沒有意義,我:AJAX的錯誤回調屬於我作爲一個整體,而不是特定的頁面元素的應用。那麼爲什麼回調函數應該與一個單獨的頁面元素相關聯?

所以:爲什麼jQuery文檔建議使用看起來不太可讀的方法,哪種方法最好?

+0

我更喜歡ajaxSetup用於此目的。 – Kris 2012-04-24 10:36:24

回答

7

典型的用途是特定的頁面元素綁定ajaxError到是要顯示在您的錯誤信息會在div ;也許是頁面頂部的「flash」消息div。這樣你可以直接訪問該div來追加你的消息。

但是,如果您不使用特定的DOM元素作爲您的消息顯示區域,那麼您肯定可以將其綁定到$(document)或其他此類全局元素。

+2

jQuery 1.9中,ajax事件只能在'document'上使用,所以應該像'$(document).ajaxError(function(){...})'或'$(document).on(「ajaxError 「,function(){...})'。文檔說不使用'$ .ajaxSetup()'的原因是它們只是請求的* default *設置;任何定義它自己的'error'處理程序的請求都會破壞'$中的設置。ajaxSetup()'這可能不是你想要的。 – 2014-08-04 19:10:12

0

您可以連接起來的誤差函數到全身像這樣:

$('body').ajaxError(function() { 
    alert("OOPS!") 
}); 
+1

但是它的可讀性不如'ajaxSetup()'方法?也就是說,這裏的函數與文檔的主體沒有任何關係(換句話說,如果我可以通過用「主體」代替任何其他元素來達到同樣的效果,這看起來就像是錯誤的方法) – 2010-07-27 20:04:49

0

可能存在它可能與單個控件相關的情況 - 例如當您有一個通過ajax往返數據庫的自動完成時,而不是像提交時那樣的整個頁面。然後,這將確定是否要隔離頁面組件上的錯誤,如果是這樣,那麼對錯誤的響應應該是什麼,而不是採用更通用的方法。


相關問題