admin管理员组

文章数量:1430587

I have various function with the ajax and $.post syntax which gives call to the server function. But when session gets expired and page is not refreshed my ajax code wont work. In this I want to redirect the page to login controller. As it this is ajax call my redirection code is not working.

Is there any code or JavaScript/jQuery function which gets executed before any other jquery ajax and post function.

I am using PHP(Yii framework) on server side.

Please let me know. Thank you.

I have various function with the ajax and $.post syntax which gives call to the server function. But when session gets expired and page is not refreshed my ajax code wont work. In this I want to redirect the page to login controller. As it this is ajax call my redirection code is not working.

Is there any code or JavaScript/jQuery function which gets executed before any other jquery ajax and post function.

I am using PHP(Yii framework) on server side.

Please let me know. Thank you.

Share Improve this question asked Feb 10, 2015 at 9:14 Anuja PAnuja P 2,1432 gold badges19 silver badges32 bronze badges 1
  • Please provide more code. Especially the mentioned "redirection code" which is not working. Otherwise the first thought I have: Why not have a "keep alive" or "is alive" function? – Mario Werner Commented Feb 10, 2015 at 9:17
Add a ment  | 

5 Answers 5

Reset to default 3

You can use the "beforeSend" ajax event where you can check you session and if it's expired you can do something else:

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

Check this for more info: http://api.jquery./Ajax_Events/

jQuery provides a set of AJAX events you can listen during request lifecycle. In your case you can subscribe to ajaxError event triggered on document to react when requests failed as unauthorized:

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

This code can solve your problem.

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

Note beforeSend is local event and ajaxSend is global event

        /***
         * 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
                }
            });     
      });

This is what I want. working perfectly for my functionality. Thank you for all answers and ments. I got a big reference from you.

use ajaxComplete event.

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

本文标签: phpNeed to call one javascript function before all ajax and jquery post functionStack Overflow