2014-01-11 185 views
0

我有一個註銷按鈕,當用戶登錄時顯示,現在它只在主頁上,我想在用戶單擊註銷時刷新同一頁面, 我創建了一個功能,以便當按下注銷它刷新了同一頁面上刷新它會記錄用戶的,但是,當註銷時單擊刷新用戶點擊某個按鈕時的頁面ajax

function logout() { 
    $("#logout").live("click",function(){ 
     $(document).ajaxStop(function(){ 
      window.location.reload(); 
     }); 
    }); 
}; 

回答

0

嘗試類似;

function logout() { 
    $("#logout").live("click",function(){ 
    $.ajax({ // do the ajax request 
     url:"file.php", 
     success:function(result){ 
     alert(result);//do something if you want or simply remove 
     location.reload(); 
     } 
    }); 
    }); 
}; 
0

我感到困惑,爲什麼你想它不會刷新綁定到點擊處理程序體內的ajaxstop,但是如果您只是想點擊註銷按鈕重新加載頁面,則可以使用以下內容:

function bindToLogoutClick() { 
    $("#logout").on("click",function(e){ 
     e.preventDefault(); //Used to restrict page posting to server if logout is a submit button. 
     window.location.reload(); 
     return false; //Used to restrict page posting to server if logout is a submit button. 
    }); 
}; 

和關閉過程的某個地方,你也必須調用bindToLogoutClick()函數來設置的結合,像對上DOM Load按鈕的單擊事件:

$(function() { 
    bindToLogoutClick(); 
}); 
0

我不知道,如果你的ajaxStop回調真的是被稱爲,Ajax調用後,測試它使用console.log或乾脆提醒,就像這樣:

$("#logout").live("click",function(){ 
    $(document).ajaxStop(function(){ 
     alert('ajaxStop callback'); 
     window.location.reload(); 
    }); 
}); 

,如果它不叫,就意味着你有未完成的頁面的一個或多個Ajax請求。如你所知.ajaxStop()

註冊一個處理程序被調用時,所有的Ajax請求已經完成

您可以檢查您的瀏覽器開發者工具,尋找持續XHR請求。

  • 最有可能你的問題是你加.ajaxStop()觸發所有Ajax請求完成後,則由於沒有持續的Ajax調用,它將永遠不會觸發

  • 問題是如果您使用多個高級jQuery或其他客戶端框架組件,它可能永遠不會發生。我的意思是高級組件通常總是在後臺使用Ajax請求,而你甚至不知道。

  • 其他可能的問題可能是ajax請求經歷了超時而沒有完成。

  • 你必須要小心的global的選擇,因爲:

如果$。阿賈克斯()或$ .ajaxSetup()被調用,全局選項設置爲false,則。 ajaxStop()方法不會觸發

例如,如果你有一個Ajax調用是這樣的:

$.ajax({ 
    //... 
    global: false, 
    // ... 
}); 

$.ajaxSetup({ 
    ... 
    global: false, 
    ... 
}); 
$.ajax(...); 

您.ajaxStop()方法將不會觸發