2015-02-10 41 views
3

我使用ajax和$ .post語法調用服務器函數的各種函數。但是,當會話過期和頁面不刷新我的ajax代碼將無法正常工作。在此我想將頁面重定向到登錄控制器。 因爲這是ajax調用我的重定向代碼不起作用。需要在所有ajax和jQuery發佈函數之前調用一個javascript函數

是否有任何代碼或JavaScript/jQuery函數在任何其他jquery ajax和post函數之前執行?

我在服務器端使用PHP(Yii框架)。

請讓我知道。謝謝。

+0

請提供更多代碼。特別是提到的「重定向代碼」,這是不工作的。否則,我首先想到的是:爲什麼不有「保持活力」或「活着」功能? – 2015-02-10 09:17:17

回答

0
 /*** 
     * Global Ajax call which gets excuted before each $.ajax and $.post function 
     * at server side chk session is set or destroy 
     ***/ 
     $(document).on('ajaxStart', function() 
     { 
      $.post(BASEURL+"/login/chkLogin", 
      {}, 
      function(data) 
      { 
       if (data == 'login') { 
        window.location = BASE_URL+'/login'; //Load the login page 
       } 
       else 
       { 
        //alert('all okay! go and execute!'); 
        //No need to write anything in else part 
        //or can say no need of else block 
        //if all okay normal ajax action is processed 
       } 
      });  
     }); 

這就是我想要的。爲我的功能完美工作。感謝您的所有答覆和評論。我從你那裏得到了很大的參考。

2

您可以使用「beforeSend」 AJAX事件,你可以檢查你的會話,如果它過期,你可以做別的事情:

$.ajax({ 
    beforeSend: function(){ 
    // Handle the beforeSend event 
    }, 
    complete: function(){ 
    // Handle the complete event 
    } 
    // ...... 
}); 

檢查本作的詳細信息:http://api.jquery.com/Ajax_Events/

+0

謝謝。但我想要全局的東西,我不需要通過編輯每個函數來添加。 如果沒有,我們可以使用相同的jQuery $ .pos函數。 – 2015-02-10 09:23:37

3

jQuery提供一個您可以在請求生命週期中監聽AJAX events。你的情況,你可以訂閱ajaxError事件引發了對document當請求失敗,因爲未授權的反應:

$(document).on('ajaxError', function(el, xhr) { 
    if (xhr.status == 401) { 
     alert('Unauthorized'); 
    } 
}); 
2

這個代碼可以解決你的問題。

$(document).bind("ajaxSend", function(){ 
    //DO Someting.. 
}); 

注beforeSend是本地事件和ajaxSend是全球性的活動

+0

是測試相同 – 2015-02-10 09:39:04

0

使用ajaxComplete事件。

$(document).ajaxComplete(function() { 
    window.location.href = "/login"; 
}); 
相關問題