jQuery / AJAX post() - 一些问题

时间:2011-02-07 21:06:32

标签: javascript jquery mysql ajax pdo

我基本上在一个用户反复点击按钮的网站上工作,每次点击都会增加他的分数。我不想在每次点击之间刷新页面,所以我使用的是AJAX。

我目前遇到的问题如下:

  1. 当我尝试将我的javascript var设置为= <? echo $result['count']; ?>时,它似乎无效。

  2. 我不明白如何正确地将PDO用于UPDATE MySQL表,并在查询中进行计算,例如$update = $dbh->execute("UPDATE count SET count='$count'+1 WHERE username='$username'");。这是计算的正确语法,这是在PDO中执行此操作的正确方法吗?

  3. 以下是我用于点击系统的测试页面的代码:

    <html>
    <?php 
    
    $hostname = 'localhost';
    $username2 = 'refrigerator';
    $password = 'xxx';
    
    $dbh = new PDO("mysql:host=$hostname;dbname=refrigerator", $username2, $password);
    $username = $_COOKIE["user"];
    
    $rows = $dbh->prepare("SELECT count FROM count WHERE username = '$username'");
                $rows->execute();   
                $result = $rows->fetchALL();
                $result['count'] = $count;  
    
    if(isset($_POST['action'])){    
    
        if ($_POST['action'] == 'increase'){
    
            $update = $dbh->execute("UPDATE count SET count='$count'+1 WHERE username='$username'");            
        }
    }
    ?>
    <body>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    
        var count = <? echo $result['count']; ?>;
    
            $("#update").click(function() {
                $.ajax({
                type: "POST",
                url: "button.php",
                data: {"action":"increase"},
                success: function(update) {
    
                    count++;
                    $("#counter").html(+count);
                }
            });
        });
    });
    </script>
    <button id="update" type="button">Button</button>
    <div id="counter"><? echo $result['count']; ?></div>
    
    </body>
    </html>
    

    非常感谢,非常感谢任何帮助。即使你能指出我正确的方向,这将有助于我回答我的问题,那将是非常棒的。

    谢谢

1 个答案:

答案 0 :(得分:0)

你应该:

$count = $result['count'];

而不是:

$result['count'] = $count;

=符号左边的变量是从=符号右边的任何值接收赋值的内容。

在您的更新声明中,您可以执行以下操作,而不是使用计数变量:

 $update = $dbh->execute("UPDATE count SET count=count+1 WHERE username='$username'");