[英]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.