我正在开发一个非常简单的投票系统,作为一个概念证明我有一个带有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;
?>
答案 0 :(得分:3)
问题是,在您的服务器脚本中,您尝试访问特定的POST参数 - 名为votes
。但是在您的客户端脚本中,您只向服务器发送一个字符串(值为votes
),而不对其进行任何标记。
首先将data: votes
行更改为data: {votes: votes}
或类似内容;更正您的脚本以便未设置$_POST['votes']
,它表示错误:
if (! isset($_POST['votes'])) {
throw new Exception('No value for votes');
}
echo $_POST['votes'] + 1;
请注意,即使没有全能的SO,你也会注意到这一点。 )如果只有$_POST['votes']
级别设置得太高,原始代码应该触发E_NOTICE(如error_reporting
未定义)。请记住,在开发中error_reporting(-1)
行是您的朋友。
答案 1 :(得分:0)
您需要将变量保存到更长久的位置。到目前为止,每次脚本终止(每个页面加载)都会丢失。将它存储在$ _SESSION中,你会很高兴。请注意,您需要调用sessions的session_start()才能正常工作。