我对这个错误感到非常头疼,尽管我确定它是显而易见的。如果是这样,请原谅。
以下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>
document.cookie = ...
呢?JS完全可以自己设置cookie,而不需要通过AJAX与PHP交互。 - Marc B