簡體   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