我想創建一個全局處理程序,它在ajax成功回調之前被調用。我用我的應用程序做了很多ajax調用,如果這是一個錯誤,我返回一個特定的結構,所以我需要在運行成功之前運行一些東西來檢查響應數據,看它是否包含像1/0全球擴展jQuery ajax成功
樣本響應
{"code": "0", "message": "your code is broken"}
或
{"code": "1", "data": "return some data"}
我無法找到一個方法來做到這一點jQuery的開箱即用,看着預過濾器,ajaxSetup和其他可用的方法,但他們並沒有把它拿下來,我可以想出的賭注是黑客攻擊阿賈克斯方法F A點點:
var oFn = $.ajax;
$.ajax = function(options, a, b, c)
{
if(options.success)
{
var oFn2 = options.success;
options.success = function(response)
{
//check the response code and do some processing
ajaxPostProcess(response);
//if no error run the success function otherwise don't bother
if(response.code > 0) oFn2(response);
}
}
oFn(options, a, b, c);
};
我一直在使用這一段時間,它工作正常,但不知道是否有更好的方式來做到這一點,或者說我在jQuery的文檔錯過。
聽起來像[鴨子衝孔](http://paulirish.com/2010/duck-punching-with-jquery/) – qwertymk 2012-03-22 01:04:20
爲200狀態返回錯誤看起來完全錯誤。將HTTP狀態設置爲適當的錯誤代碼(4xx/5xx)並使用jQuery AJAX錯誤處理程序 – Phil 2012-03-22 01:07:17
@Phil如何驗證錯誤?返回4xx或5xx似乎太籠統了。 – Joseph 2012-03-22 01:15:28