簡體   English   中英

Ajax / PHP值不會增加一次以上

[英]Ajax/PHP value not incrementing more than once

我正在開發一個非常簡單的投票系統,作為概念證明,我有一個帶有php定義變量的div,該變量應該在單擊按鈕時增加1。 我到目前為止工作,但只有一次......為什么votes值不能繼續點擊該按鈕時去了?

到目前為止,這是我的代碼:

投票頁面:

<?php $votes = 0 ?>

<script>
$(document).ready(function(){
    $("#btn1").click(function() 
    {
        var votes = document.getElementById("votes").innerHTML;

        $.ajax({
            type: "POST",
            url: "ajax.php",
            data: votes,
            success: function(votes)
            {
                document.getElementById("votes").innerHTML = votes; 
            }                 
            });
    })
}); 
</script>
<div id="votes"><?= $votes ?></div>
<input type="button" id="btn1" value="vote!"/>

ajax.php:

<?php
    echo $_POST["votes"] + 1;            
?>

問題是在服務器腳本中,您試圖訪問名為votes的特定POST參數。 但是,在客戶端腳本中,您僅向服務器發送一個字符串( votes值),而無需對其進行任何標記。

data: votes行更改為data: {votes: votes}或類似的,首先; 更正您的腳本,以便未設置$_POST['votes'] ,這表明存在錯誤:

if (! isset($_POST['votes'])) {
   throw new Exception('No value for votes'); 
}
echo $_POST['votes'] + 1;

請注意,即使沒有全能的SO,您也會注意到這一點。 )請注意,如果只是將error_reporting級別設置得不太高,原始代碼應該已經觸發了E_NOTICE(因為未定義$_POST['votes'] )。 請記住,在開發中, error_reporting(-1)行是您的朋友。

您需要將變量保存到一些更永久的位置。 到目前為止,每次腳本終止(每次頁面加載)時,它都會丟失。 將其存儲在$ _SESSION中,您就可以使用了。 請注意,您需要調用session_start()才能使會話正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM