Принудительно перезагрузить / обновить при нажатии кнопки назад - PullRequest
18 голосов
/ 31 января 2012

Я постараюсь объяснить это.

У меня есть приложение, которое показывает 50+ проектов на моей странице view. Пользователь может щелкнуть отдельный проект и перейти на страницу update, чтобы обновить информацию о проекте. Все работает отлично, за исключением того, что после того, как пользователь закончит обновление информации о отдельном проекте и нажмет кнопку «назад» в браузере до предыдущей view page. Информация о старом проекте (до обновления) все еще там. Пользователь должен нажать обновить, чтобы увидеть обновленную информацию. Это не так уж плохо, но я хочу обеспечить лучший пользовательский опыт. Есть идеи, чтобы это исправить? Большое спасибо.

Ответы [ 13 ]

0 голосов
/ 05 января 2014

сделайте скрытый флажок и используйте код ниже (coffeescript)

window.location.reload()  if $("#refreshCheck")[0].checked
  $("#refreshCheck")[0].checked = true
0 голосов
/ 31 октября 2013

Я использую jquery и php-скрипт для принудительной перезагрузки кнопки. Часть window.unload требуется только в Firefox. Истекшее время ожидания 1 секунда и часть добавления тела только для иллюстрации функциональности. window.location.reload (true) даст тот же результат, что и window.location.href = window.location.href;

JQuery:

<script>
    $(window).unload(function() {});


        $.get('h.php',function(data){
            if($.trim(data)=='first'){
               // $('body').append(data)
               // setTimeout(function(){
               window.location.href = window.location.href;
               // },1000)
            }
            else {
                // $('body').append(data)
            }
        });

</script>

h.php:

<?php session_start(); ?>
<?php 
if(!$_SESSION['reloaded']){
    echo 'first';   

    $_SESSION['reloaded']=1;
}
else {
    echo 'second';
    unset($_SESSION['reloaded']);   
}
?>
0 голосов
/ 31 января 2012

Вы можете отправлять HTTP-заголовки на странице просмотра, которые сообщают браузеру о невозможности кэширования страницы.Это означает, что браузер должен будет запрашивать страницу с сервера каждый раз, когда к ней обращаются - это означает, что она всегда отображает актуальную информацию.

Заголовки необходимо отправлять перед любым другим контентом, поэтому добавьте следующеепрямо вверху страницы просмотра.

header("Cache-Control: no-cache, must-revalidate");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...