【发布时间】:2011-09-04 03:33:23
【问题描述】:
尽管我确信这是显而易见的事情,但我正在为这个错误拉出我的头发。如果是,请道歉。
以下 javascript 成功设置了我的 cookie:
<script type="text/javascript">
$(document).ready(function(){
$.post('../setCookie.php',{'region':'test'});
});
</script>
但只要我将相同的代码绑定到 onclick 事件,就像这样......
<script type="text/javascript">
$(document).ready(function(){
$("#us a").click(function(){
$.post('../setCookie.php',{'region':'en-us'});
});
$("#uk a").click(function(){
$.post('../setCookie.php',{'region':'en-gb'});
});
});
</script>
<ul>
<li id="uk"><a href="http://www.example.com/uk">
<span>Enter UK site</span></a></li>
<li id="us"><a href="http://www.example.com/us">
<span>Enter US site</span></a></li>
</ul>
..它不再设置 cookie!即使相同的代码被称为以完全相同的方式执行(我逐步完成它,并看到它应该是的一切)。
重复:javascript 运行良好。我正在逐步浏览 setCookie.php,一切都一样...除了末尾没有 cookie。
发生了什么事?我猜是浏览器安全问题还是什么?
对于任何感兴趣的人,这是我解决它的方法:
<script type="text/javascript">
$(document).ready(function(){
$("#us a").click(function(e){
e.preventDefault();
$.post('../setCookie.php',{'region':'en-us'},
function() {
window.location = "http://www.example.com/us";
}
);
});
$("#uk a").click(function(e){
e.preventDefault();
$.post('../setCookie.php',{'region':'en-gb'},
function() {
window.location = "http://www.example.com/uk";
}
);
});
});
</script>
【问题讨论】:
-
有什么理由你使用 ajax 调用这个 cookie,而不是仅仅做
document.cookie = ...? JS 完全能够自行设置 cookie,而无需通过 AJAX 涉及 PHP。 -
@Marc,我已将它绑定到我在项目其他地方使用的类。我认为将它们放在一起更整洁。但除此之外,没有。
-
@Marc,$_COOKIE[] 还有时间开火吗?
-
$_COOKIE 由脚本启动时客户端发送的 cookie 填充。它不会改变以适应您在脚本中进行的任何 setcookie() 调用。您在 PHP 中设置的任何 cookie 只会在脚本的 NEXT 调用时显示在 $_COOKIE 中。
-
好点。我的意思是 $.cookie(通过 JQuery),但现在可以了,它工作正常,谢谢。
标签: php javascript jquery cookies