![](/img/trans.png)
[英]Javascript callback after on change event has partial page refresh
[英]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
)。
您可以處理XMLHttpRequest
的onreadystatechange事件,特別是您正在尋找 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.