Ajax两次点击

时间:2013-03-11 19:59:23

标签: jquery ajax click double hide

点击链接后,我有这个用于隐藏广告框的jquery代码:

$('a.close').click(function () {
   var parent = $(this).parent().parent();
   var adid = $(parent).attr('id');
   $.ajax({
       type: "POST",
       url: "./setcookie.php",
       data: "adid=" + adid,
       cache: false,
       dataType: 'json',
       success: function (cook) {
           if (cook.set === 'success') {
               parent.fadeOut(1000);
           }
       },
       error: function () {
           $(".guestwarn").html("<font color='red'>There was an error submitting the form. Please try again.</font>").fadeIn(1000);
       }
   });
   return false;

});

所以我希望通过cookies关闭框。 我的HTML(php)是:

<?php if(isset($_COOKIE[ "msg1"])){?>
<div id="msg1" class="msgbox">
    <div class="guestwarn">
        <a href="#" class="close">X</a>
        Something goes here...
    </div>
</div>
<?php } ?>

所以我的工作setcookie.php是:

$adcookies = array();
$value = $_POST['adid'];
if ($value) {
    setcookie($value, $value, time() + 3600);
    if (isset($_COOKIE[$value])) {
        $adcookies['set'] = "success";
    } else {
        $adcookies['set'] = "error";
    }
    echo json_encode($adcookies);
}

为什么adbox(.msgbox)会在两次点击后隐藏? 这些代码有什么问题? 谢谢

1 个答案:

答案 0 :(得分:0)

我敢打赌饼干。如果您设置了一个cookie,那么在您刷新页面后(在您的第二个AJAX请求中),您将“可见”,这就是您必须单击两次的原因。您可以使用会话而不是cookie来解决它。