浏览器不会从onclick事件中设置cookie

Chu*_*utt 4 javascript php cookies jquery

我正在用这个虫子把头发拉出来,虽然我确信这是显而易见的.如果是的话道歉.

以下javascript成功设置了我的cookie:

<script type="text/javascript">
$(document).ready(function(){
    $.post('../setCookie.php',{'region':'test'});
});
</script>
Run Code Online (Sandbox Code Playgroud)

但是,只要我将相同的代码绑定到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>
Run Code Online (Sandbox Code Playgroud)

..不再设置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>
Run Code Online (Sandbox Code Playgroud)

Nik*_*las 9

我没有看到任何阻止正常链接点击通过的东西?如果您没有阻止法线a href通过,则$.post在页面更改之前将没有任何时间来执行请求.

请尝试以下方法:

$(document).ready(function(){
    $('a').click(function(e){
        e.preventDefault();
        $.post('../setCookie.php',{'region':'test'});
    });
});
Run Code Online (Sandbox Code Playgroud)

它将停止链接的页面更改,但至少应该传递cookie.现在,如果您还希望加载页面,则在请求中添加onComplete方法,以便在成功发送cookie数据后,您可以继续更改页面.