更改Cookie w/ Ajax:奇怪的延迟


Change Cookie w/ Ajax: Strange Delay

我在这里编写了一个相当简单的函数。我使用cookie来限制用户每天只能投5票(不是很完美,实际上很容易解决,但客户坚持要没有用户帐户,所以这是次佳选择)。

因此,我在Javascript中使用Ajax调用来动态更改Cookie -每次用户单击"Vote Up"按钮时,Ajax都会与PHP文件对话,从而将Cookie值减少1。

但是有一个奇怪的延迟发生了。我已经告诉Ajax console.log cookie值(在PHP文件中回显),并且在日志中得到一个值的延迟。cookie从5开始,所以当我点击一次"投票"时,我应该得到一个console.log为"4",因为这个值减少了1,然后被记录下来。我得到的是5。下一次,应该是'3',我得到'4',以此类推。

我的代码张贴在下面。我真的不知道这里该怎么做-我已经逻辑地思考过代码,除非我的头不工作,我看不出为什么这不会工作。

Ajax调用:

$.ajax({
    type: "GET",
    url: "includes/user_vote.php",
    success: function(data){
        console.log(data);
    },
    error: function(jqXHR, textStatus, errorThrown){
        //log the error if the ajax function fails
        console.log(textStatus);
        console.log(errorThrown);
    },
    complete: function(data){
    }
});

user_vote.php:

if($_COOKIE['votes_left'] <= 0){
    $newVal = 0;
} else {
    $newVal = $_COOKIE['votes_left'] - 1;
}
setcookie('votes_left', $newVal, strtotime('today 23:59'), "/");
echo $_COOKIE['votes_left'];

有更多的PHP,不直接与此相关,但无论如何张贴在这里。如果cookie尚未设置,则在index.php上运行以设置cookie。

if(!isset($_COOKIE['votes_left'])){
    $votes = 5;
    $time = date('h:i:s');
    setcookie('votes_left', $votes, strtotime('today 23:59'), "/");
    setcookie('set_time', $time, strtotime('today 23:59'), "/");
}

正如我将在下面链接的帖子所提到的,Cookie超级全局将只显示您请求页面时的值,因此您永远不会看到您刚刚设置的值。查看这篇文章了解更多细节

PHP cookie有一个刷新延迟