Страница требует обновления, чтобы использовать обновленные куки - PullRequest
0 голосов
/ 31 октября 2018

У меня следующая процедура:

  • Кнопка, которая вызывает функцию fcn1 и ссылку на некоторую страницу p1
  • fcn1 читает 6 строк из внутреннего SQL
  • 6 строк хранятся в куки
  • Страница p1 прочитать 6 файлов cookie и отобразить результат 6 строк

Выше работает отлично - проблема в том, что p1 нуждается в обновлении, прежде чем показывать новейшие 6 строк. С cookie-файлами все в порядке - я вижу это в разделе «Cookies» в «inspect». Я пытался вставить pause(x); и location.reload() на p1.

Как мне убедиться, что куки установлены функциями до того, как php создаст HTML?

Одним из решений может быть создание другого ajax с обновлением 6 строк в p1, но мне не нравится это решение - похоже, один-много шагов. Я не могу опубликовать весь код, так как это всего несколько строк. Ниже находится кнопка, которая вызывает функции и href (она запускается в цикле for с индексом j):

echo '<span><li><a onclick="fcn1('.$games_id[$j].')" href="/cc/p1.php" id="'.$games_id[$j]. '" value='.$games_id[$j]. '>' .$games_text[$j]. '</a></li></span>';

Ниже показано, как текст определяется в p1, где он, кажется, загружается и «старый cookie».

<text x="501" y="289.9721" alignment-baseline="middle" text-anchor="middle" font-family="Verdana" font-size="24"><?php echo $_COOKIE["cat1_str"] ?></text>

Спасибо

Обновление 1:

<script>
function fcn1(game) {
    var gameid = game;
    var date = new Date();
    date.setTime(+ date + (30 * 86400000)); // Cookie expires in 30 days
    document.cookie = "SelectedGame=" + gameid + "; expires=" + date.toGMTString() + "; path=/";
    SetStandardGameCategories();
}
</script>

<script language="javascript">
    function SetStandardGameCategories() {
        $.ajax({
            type: "GET",
            url: "/content/SetStandardGameServer.php",
            data: {},
            success: function(data){ 
            }
        });
    }
</script>

SetStandardGameServer.php

<?php
    ob_start();
    require("db.php");

    if(isset($_COOKIE['SelectedGame'])) {
        SaveStandardCategories($_COOKIE['SelectedGame']);
    }
?>

1 Ответ

0 голосов
/ 01 ноября 2018

Вы должны дождаться выполнения PHP и затем перенаправить.

echo '<span><li><a onclick="fcn1('.$games_id[$j].', \'/cc/p1.php\'); return false;" href="#" id="'.$games_id[$j]. '" value='.$games_id[$j]. '>' .$games_text[$j]. '</a></li></span>';

Сценарий:

function fcn1(game, redirectURL) {
    var gameid = game;
    var date = new Date();
    date.setTime(+ date + (30 * 86400000)); // Cookie expires in 30 days
    document.cookie = "SelectedGame=" + gameid + "; expires=" + date.toGMTString() + "; path=/";
    SetStandardGameCategories(redirectURL);
}

function SetStandardGameCategories(redirectURL) {
    $.ajax({
        type: "GET",
        url: "/content/SetStandardGameServer.php",
        data: {},
        success: function(data){
            if (redirectURL) {
                window.location.href = redirectURL;
            }
        }
    });
}

Обратите внимание, что я добавил новый параметр. Если вы используете эту функцию в других местах и ​​не хотите перенаправлять, просто оставьте параметр пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...