Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Ajax更改Cookie:奇怪的延迟_Php_Jquery_Ajax_Cookies - Fatal编程技术网

Php 使用Ajax更改Cookie:奇怪的延迟

Php 使用Ajax更改Cookie:奇怪的延迟,php,jquery,ajax,cookies,Php,Jquery,Ajax,Cookies,我在这里编写了一个相当简单的函数。我使用cookies将用户限制在每天5票以内(这并不完美,事实上很容易找到,但客户坚持认为,没有用户帐户,所以这是下一个最好的选择) 因此,我正在使用Javascript中的Ajax调用动态更改Cookie—每次用户单击“投票”按钮时,Ajax都会与PHP文件对话,从而将Cookie值减少一 但是有一个奇怪的延迟发生了。我已经告诉Ajax将cookie值记录在console.log中(在PHP文件中回响),当记录在日志中时,我得到一个值的延迟。cookie从5开

我在这里编写了一个相当简单的函数。我使用cookies将用户限制在每天5票以内(这并不完美,事实上很容易找到,但客户坚持认为,没有用户帐户,所以这是下一个最好的选择)

因此,我正在使用Javascript中的Ajax调用动态更改Cookie—每次用户单击“投票”按钮时,Ajax都会与PHP文件对话,从而将Cookie值减少一

但是有一个奇怪的延迟发生了。我已经告诉Ajax将cookie值记录在console.log中(在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'];

正如我将在下面链接的帖子所提到的,Cookie Super Global将只显示您请求页面时的值,因此您永远不会看到您刚刚设置的值。查看此帖子了解更多详细信息


正如我将在下面链接的帖子中提到的,Cookie Super Global只会显示您请求页面时的值,因此您永远不会看到您刚刚设置的值。查看此帖子了解更多详细信息


这就是你的
PHP
代码吗?如果还有更多,请添加它。嘿,这是user_vote.PHP中的所有PHP代码。为什么,应该有更多吗?唯一的其他PHP最初是在index.PHP中设置cookie(如果尚未设置)。将其添加到主post.Ugh。这是饼干的一个很弱的问题。我想我可以做两次AJAX调用,一次设置,另一次查询,或者在执行检查时检查值-1。有点脏,但这是一个快速修复和较少的服务器请求。这就是你的
PHP
代码吗?如果还有更多,请添加它。嘿,这是user_vote.PHP中的所有PHP代码。为什么,应该有更多吗?唯一的其他PHP最初是在index.PHP中设置cookie(如果尚未设置)。将其添加到主post.Ugh。这是饼干的一个很弱的问题。我想我可以做两次AJAX调用,一次设置,另一次查询,或者在执行检查时检查值-1。有点脏,但这是一个快速修复和较少的服务器请求。如果你的答案基本上是你链接到的帖子中所说的相同,你应该把它标记为重复,而不是只发布链接的答案。好的,谢谢。如果你的答案与你链接到的帖子中所说的基本相同,你应该将其标记为重复,而不是只发布链接答案。好的,谢谢。不仅仅对我来说是链接,但是嘿。
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'), "/");

}