我正在用这个虫子把头发拉出来,虽然我确信这是显而易见的。道歉,如果是。
以下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>
答案 0 :(得分:9)
我没有看到任何阻止正常链接点击的内容?如果您没有阻止普通a href
通过,则在页面更改之前将没有任何时间执行$.post
请求。
尝试以下方法:
$(document).ready(function(){
$('a').click(function(e){
e.preventDefault();
$.post('../setCookie.php',{'region':'test'});
});
});
它将停止链接的页面更改,但至少应该传递cookie。现在,如果您还希望加载页面,则在请求中添加onComplete方法,以便在成功发送cookie数据后,您可以继续更改页面。
答案 1 :(得分:1)
将此代码放在&lt;脚本&gt;标签位于:(我假设&lt; head&gt;)
$(document).ready(function(){
$("#us a").click(function(){
$.post('../setCookie.php',{'region':'en-us'});
});
$("#uk a").click(function(){
$.post('../setCookie.php',{'region':'en-gb'});
});
});
答案 2 :(得分:0)
如果是安全问题,您将在控制台上看到错误(firebug \ webkit \ IE开发工具)
我想在这种情况下我会做的是改变点击事件并把它放在这里:
<script type="text/javascript">
$(document).ready(function(){
$("#someid > li").click(function(){
$.post('../setCookie.php',{'region':$(this).attr("id")});
});
});
</script>
然后..:
<ul id="someID">
<li id="uk"><a href="http://www.example.com/uk">
<span>Enter UK site</span></a></li>
<li id="us"><a href="www.example.com/us">
<span>Enter US site</span></a></li>
</ul>
我建议不要在HTML中使用JavaScript \ jQuery,只需使用document.ready()并绑定你的事件(如果你当然使用jQuery)
答案 3 :(得分:-1)
最有可能的原因是它在创建之前尝试访问jQuery($
)。最好使用第一个例子中的document.ready
。