2011-12-08 19 views
1

我想過濾所有的ajax響應。我發現這個jQuery函數:jQuery.ajaxPrefilter()。 有人能告訴我這是如何工作的? 當用戶沒有登錄時,我必須捕捉到這個PHP響應(fe .:「not_logged_on」),因爲它的時間必須與正常情況下一樣。.ajaxPrefilter()jQuery

例如:

jQuery.ajaxPrefilter(function(response){ 
    if (response == 'not_logged_on') 
     window.location = "?login"; 
}) 

我希望理解我的問題。

回答

2

我會推薦使用jQuery.ajaxSetup。你想實現的是每個Ajax調用都會檢查響應。 ajaxPrefilter可以幫助你在ajax調用之前設置一些東西。

您可以通過使用解決您的問題:

jQuery.ajaxSetup({ 
    success: function(data) { 
    // NOTE: data must not necessarily be a string, 
    // depends on the requested/returned type 
    if (data === "not_logged_on") { 
     window.location = "?login"; 
    } 
    } 
}); 

這應該符合您的需求。

0

ajaxPrefilter命令允許您在發送Ajax請求之前修改它們。它無法訪問響應,因爲請求尚未發生。

我相信你正在尋找ajaxSuccessajaxComplete事件,它們分別在Ajax調用成功完成或完成時觸發。他們有xhr參數,其中包含請求的結果,您的事件處理程序可以檢查和使用該結果。