0

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

2 回答 2

3

问题是在您的服务器脚本中,您试图访问特定的 POST 参数 - 命名为votes. 但是在您的客户端脚本中,您只向服务器发送一个字符串(值为votes),而无需对其进行任何标记。

首先将行更改data: votesdata: {votes: votes}或类似;更正您的脚本,以便$_POST['votes']未设置,它表示错误:

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

请注意,即使没有全能的 SO,您也会注意到这一点。)看,原始代码应该已经触发 E_NOTICE ($_POST['votes']未定义),如果只是error_reporting级别没有设置得太高的话。记住,在开发error_reporting(-1)线上是你的朋友。

于 2013-05-17T21:06:01.593 回答
0

您需要将变量保存到更永久的位置。到目前为止,每次脚本终止(每次页面加载)时它都会丢失。将其存储在 $_SESSION 中,您就可以开始使用了。请注意,您需要调用 session_start() 才能使会话正常工作。

于 2013-05-17T20:59:37.837 回答