繁体   English   中英

Javascript:在其他页面中更改 $_SESSION 事件后刷新当前页面

[英]Javascript: Refresh current page after event change $_SESSION in a other page

我需要一些帮助。 我创建了一个多语言站点,没有使用相同的 php 文件进行更改,我只是修改了它的内容。 为此,我使用会话。 所以我配置了 2 个按钮:FR 和 EN,它们改变了语言。 我 go 通过另一个 php 文件。 使用此代码,如果我手动重新加载页面,它就可以工作。 但如果我使用:

location.reload(true);

它不起作用,我想在没有用户干预的情况下自动重新加载页面。 有没有人有解决方案? 谢谢你,问候,

我的代码索引.php:

<?php
session_start();
if(isset($_SESSION['lang']) == false){
    $_SESSION['lang'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
?>
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <link href="_style/style-master.css" rel="stylesheet" type="text/css">
        <script type='text/javascript'>
    function setSession(lang) {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "change.php?lang=" + lang, true);
        xmlhttp.send();
        //here reload and refresh page after execute code in change.php
    }
</script>
        <title></title>
    </head>
    <?php
    if($_SESSION['lang'] == "fr"){
        echo "<body>";
        echo "<p>Page française</p>";
        echo "<a href=\"javascript:setSession('en')\"><input type='submit' value='EN'></a>";
        echo "<a href=\"javascript:setSession('fr')\"><input type='submit' value='FR'></a>";
        echo "</body>";
    } else{
        echo "<body>";
        echo "<p>English page</p>";
        echo "<a href=\"javascript:setSession('en')\"><input type='submit' value='EN'></a>";
        echo "<a href=\"javascript:setSession('fr')\"><input type='submit' value='FR'></a>";
        echo "</body>";
    }
    ?>
</html>

更改.php:

<?php
    session_start();
    if(isset($_REQUEST['lang']))
    {
    $lang = $_REQUEST['lang'];
    $_SESSION['lang'] = $lang;
    }
?>

您的代码会立即重新加载index.php并且甚至不等待发送请求(更改change.php )。

您可以处理XMLHttpRequestonreadystatechange事件,特别是您正在寻找 state 2,即HEADERS_RECEIVED或任何更高版本的 Z9ED39E2EA931586B3A985A694EZEF5。

当 PHP 脚本发送标头时,这意味着它已经完成执行(并设置会话)。 您可以安全地重新加载索引页面。

function setSession(lang) {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState === 2) {
            //here reload and refresh page after execute code in change.php
            location.reload(true);
        }
    }
    xmlhttp.open("GET", "change.php?lang=" + lang, true);
    xmlhttp.send();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM