Передавать переменную PHP в JavaScript, даже когда пользователь нажимает «назад» - PullRequest
0 голосов
/ 25 сентября 2018

Давайте начнем с типичной среды PHP / html / JavaScript.Пропустив <head> и <body>, предположим, что у нас есть:

<script>
    var foo = <?php echo generateFoo(); ?>;
</script>

Предположим, это работает отлично во всех отношениях, за исключением одного незначительного недостатка.То есть всякий раз, когда я ухожу со страницы и нажимаю «назад», я получаю старое значение foo, а не обновленное.

Я понимаю эту ошибку.Нажатие «назад» загружает страницу из кэша, а не с сервера, поэтому она возвращает предыдущее значение PHP, а не текущее.Тем не менее, я хочу, чтобы заставить обновления.(Это особенно важно, потому что пользователь может изменять значение на другой странице, а тот, кто не является экспертом по html, ожидает, что «назад» приведет вас к обновленной версии предыдущей страницы. Код всегда легче изменитьчем поведение пользователя.)

Что я могу написать, что будет функционировать точно так же, как код выше, но также будет выполняться при переходе пользователя назад?

(я думаю, что правильное решение может использовать AJAX,но, возможно, я ошибаюсь. Страница уже использует AJAX из jquery CDN, поэтому я могу также использовать его, если смогу.)

Редактировать:

Решение, которое позволяет кэшировать, но просто обновляет эту переменную, было бы идеально.Однако, если остановка кэширования - единственное решение, я даже не знаю, как это сделать.Так что говорить мне, как это сделать, было бы хорошо.

Скопировано прямо из моего кода без изменений:

<?php

...

    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0 ");
?>

Так что да, яуже пытался остановить кеширование.Это не работает в BFCache.

1 Ответ

0 голосов
/ 25 сентября 2018

Проверьте эту тему и пример кода:

window.addEventListener("pageshow", function (event) {
  var historyTraversal = event.persisted || 
                         (typeof window.performance != "undefined" && 
                              window.performance.navigation.type === 2);
  if (historyTraversal) {
    // Reload the page.
    window.location.reload();
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...