我正在使用一個網站,用戶可以通過頁面頂部的鏈接更新主題。免責聲明:稍後我會用Javascript替換鏈接,但現在我想要一個安全備份,以防用戶不支持Javascript。Html <a>傳遞php變量但不加載新頁面
我可以通過我的PHP獲得顯示的鏈接。如果是淺色主題,則顯示爲<a href="?theme=dark">
,如果用戶使用深色主題,則顯示爲<a href="?theme=light">
。
但是,單擊這些鏈接中的任何一個似乎只會更新我的地址欄的瀏覽器,迫使我手動刷新頁面以更改主題。點擊鏈接時頁面不會重新加載,因此主題不會更改。它的行爲像一個異步請求,但相關的更改都嵌入在HTML中,所以它們不會在刷新之前發生。
我做錯了什麼?當我點擊這些鏈接時,是否有強制頁面重新加載的方法?
感謝您提供的任何幫助!
編輯:下面是當前腳本:
<?php
if ($_GET["theme"]) {
$theme = $_GET["theme"];
setcookie("theme", $theme, time()+21*24*60*60);
}
else if (isset($_COOKIE["theme"]))
$theme = $_COOKIE["theme"];
else {
$theme = "light";
setcookie("theme", $theme, time()+21*24*60*60);
}
?>
<!DOCTYPE HTML>
<html>
<head>
<!-- head content... -->
</head>
<body id="<?php
echo $_COOKIE["theme"];
?>">
<div id="container">
<div id="header">
<a id="switch" href="?theme=<?php
if ($_COOKIE["theme"]=="light")
echo "dark";
else
echo "light";
?>">Lights</span>
</div>
<!-- Rest of page content -->
</div>
</body>
</html>
與上面的代碼點擊鏈接帶我去/index.php?theme= 主題,但我必須刷新之前的變化把握。沒有從服務器加載新的HTML,所以身體ID不會改變。
Cookie保持不變。
P.S.就像我說過的,我將用Javascript創建一個異步版本,我只想先支持沒有啓用它的用戶。謝謝。
非現行的,我建議或者添加一個隨機數參數作爲緩存剋星(`href =「random = 42234689084746&theme = light`),和/或添加一個實際的腳本到鏈接,所以它是`script.php?主題=黑暗「,以防萬一缺少緩存設置。 – 2011-02-14 02:57:48
需要查看一些腳本,或者至少了解它的工作原理。猜測,我會說你正在處理`$ _GET ['theme']`在錯誤的地方 – Phil 2011-02-14 03:11:56