我在這裏編碼一個相當簡單的功能。我使用cookies來限制用戶每天五張選票(不完美,實際上很容易解決,但客戶堅持,沒有用戶帳戶,所以這是下一個最佳選擇)。更改Cookie與Ajax:奇怪的延遲
因此,我在Javascript中使用Ajax調用來實時更改Cookie - 每次用戶單擊「表決」按鈕時,Ajax都會對一個將cookie值減1的PHP文件進行會談。
但是有一個奇怪的延遲發生。我已經告訴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,而不是直接相關的,但無論如何,在這裏張貼。它在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'), "/");
}
是**所有**你的'PHP'代碼?如果有更多請添加它。 – Script47
嘿 - 這是user_vote.php中的所有PHP代碼。爲什麼,應該有更多? – CGriffin
唯一的其他PHP是最初設置cookie,如果它尚未設置,正確在index.php。將它添加到主帖子中。 – CGriffin