我使用ajax和$ .post語法調用服務器函數的各種函數。但是,當會話過期和頁面不刷新我的ajax代碼將無法正常工作。在此我想將頁面重定向到登錄控制器。 因爲這是ajax調用我的重定向代碼不起作用。需要在所有ajax和jQuery發佈函數之前調用一個javascript函數
是否有任何代碼或JavaScript/jQuery函數在任何其他jquery ajax和post函數之前執行?
我在服務器端使用PHP(Yii框架)。
請讓我知道。謝謝。
我使用ajax和$ .post語法調用服務器函數的各種函數。但是,當會話過期和頁面不刷新我的ajax代碼將無法正常工作。在此我想將頁面重定向到登錄控制器。 因爲這是ajax調用我的重定向代碼不起作用。需要在所有ajax和jQuery發佈函數之前調用一個javascript函數
是否有任何代碼或JavaScript/jQuery函數在任何其他jquery ajax和post函數之前執行?
我在服務器端使用PHP(Yii框架)。
請讓我知道。謝謝。
/***
* 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
}
});
});
這就是我想要的。爲我的功能完美工作。感謝您的所有答覆和評論。我從你那裏得到了很大的參考。
您可以使用「beforeSend」 AJAX事件,你可以檢查你的會話,如果它過期,你可以做別的事情:
$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ......
});
檢查本作的詳細信息:http://api.jquery.com/Ajax_Events/
謝謝。但我想要全局的東西,我不需要通過編輯每個函數來添加。 如果沒有,我們可以使用相同的jQuery $ .pos函數。 – 2015-02-10 09:23:37
jQuery提供一個您可以在請求生命週期中監聽AJAX events。你的情況,你可以訂閱ajaxError
事件引發了對document
當請求失敗,因爲未授權的反應:
$(document).on('ajaxError', function(el, xhr) {
if (xhr.status == 401) {
alert('Unauthorized');
}
});
這個代碼可以解決你的問題。
$(document).bind("ajaxSend", function(){
//DO Someting..
});
注beforeSend是本地事件和ajaxSend是全球性的活動
是測試相同 – 2015-02-10 09:39:04
使用ajaxComplete事件。
$(document).ajaxComplete(function() {
window.location.href = "/login";
});
請提供更多代碼。特別是提到的「重定向代碼」,這是不工作的。否則,我首先想到的是:爲什麼不有「保持活力」或「活着」功能? – 2015-02-10 09:17:17