Ajax / PHP值不会增加多次

时间:2013-05-17 20:55:29

标签: php javascript jquery html ajax

我正在开发一个非常简单的投票系统,作为一个概念证明我有一个带有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;            
?>

2 个答案:

答案 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()才能正常工作。