页面需要刷新才能使用更新的cookie

时间:2018-10-31 15:02:28

标签: javascript php ajax

我有以下步骤:

  • 调用函数fcn1并href到某个页面p1的按钮
  • fcn1从后端SQL读取6个字符串
  • 这6个字符串存储在cookie中
  • p1页读取了6个cookie,并显示了resulint 6个字符串

上面的效果很好-问题是p1需要刷新才能显示最新的6个字符串。 Cookie很好-我可以在“检查”的“ Cookies”下看到它。我试图将pause(x);location.reload()放在p1上。

在php构建HTML之前,如何确保cookie是由函数设置的?

一个解决方案可能是制作另一个ajax,更新p1上的6个字符串,但我不喜欢该解决方案-似乎是一个到多个步骤。 我无法发布所有代码,因为总共有几百行。 以下是调用函数和href的按钮(它在索引为j的for循环中运行):

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 :(得分:1)

您应该等待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;
            }
        }
    });
}

请注意,我已经添加了一个新参数。如果要在其他地方使用此功能,并且不想重定向,只需将参数留空。