我正在开发一个非常简单的投票系统,作为概念证明,我有一个带有 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;
?>
最佳答案
问题是,在您的服务器脚本中,您尝试访问特定的 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)
行是您的 friend 。
关于php - Ajax/PHP 值不会增加多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617769/