我刚刚测试过这个工作在一个更大的项目中,其中设置的变量将用于其他设置。当选择元素中的项目被选中时,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