我剛剛測試過這個工作在一個更大的項目中,其中設置的變量將用於其他設置。當選擇元素中的項目被選中時,cookie被設置並且頁面被重新加載,cookie值設置要在重新加載的頁面上使用的變量。在下面的測試代碼中,變量值被回顯出來,列表中的默認選定項目被設置爲匹配的變量值。js/php設置cookie並從選擇元素重新加載頁面
一切似乎在FireFox中正常工作,但在Chrome,Safari和IE中測試時,它只是沒有做任何事情。我試圖改變onMouseDown到onClick和不同的重新加載方式,如location.reload(true);
我錯過了什麼或錯誤的方式嗎?
<html>
<body>
<script>
function setCookie(cvalue) {
document.cookie = "pick=" + cvalue + "; expires=Fri, 31 Dec 9999 23:59:59 GMT";
}
function selectreload() {
window.location.assign(document.URL);
}
</script>
<?php
$servernames = array("Server 1", "Server 2", "Server 3", "Server 4");
if(!isset($_COOKIE['pick'])) {
echo "No Cookie is set!<br>";
} else {
$serverselected = $_COOKIE['pick'];
echo $serverselected;
}
?>
<select name="picks" id="picks">
<option selected="selected">Choose your server</option>
<?php
foreach($servernames as $servername) { ?>
<option value="<?= $servername ?>" <?php if(isset($serverselected) && $serverselected == $servername){echo 'selected="selected';}?> onMouseDown="setCookie('<?= $servername ?>'); selectreload();"><?= $servername ?></option>
<?php
} ?>
</select>
</body>
</html>
感謝您的輸入。
感謝您的回覆。是否可以不使用按鈕,所以當選擇它的項目提交/重新加載頁面? – Ads
我修改了我的上面的代碼,因此它將Cookie保存在「更改」而不是按下按鈕上。如果此答案回答了您的問題,請考慮接受我的答案,方法是點擊答案的左上角的複選標記。 – Err
這一切都很好,但保存在Cookie中的值是所選項目的數字ID,而不是名稱,而不是服務器1 - 服務器4的名稱0 - 3。是否可以保存名稱?感謝您的回覆。 – Ads