2014-01-11 2 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 нагрузке:

$(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, так как:

Если $ .ajax() или $ .ajaxSetup() вызывается с глобальным параметром, установленным в ложь, в. Метод ajaxStop() не срабатывает.

, например, если у вас есть АЯКС вызов вроде этого:

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

или

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

ваш метод .ajaxStop() не будет срабатывать.

Смежные вопросы