jQuery/AJAX post() - 一些问题

Posted

技术标签:

【中文标题】jQuery/AJAX post() - 一些问题【英文标题】:jQuery/AJAX post() - a few problems 【发布时间】:2011-06-23 00:46:31 【问题描述】:

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

我目前遇到的问题如下:

    当我尝试将我的 javascript var 设置为 = <? echo $result['count']; ?> 时,它似乎不起作用。

    我不明白如何正确使用 PDO 到 UPDATE 一个 mysql 表,查询中有计算,例如 $update = $dbh->execute("UPDATE count SET count='$count'+1 WHERE username='$username'");。这是计算的正确语法吗?这是在 PDO 中执行此操作的正确方法吗?

这是我用于点击系统的测试页面的代码:

<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>

非常感谢,任何帮助将不胜感激。即使你能指出我正确的方向,这将帮助我回答我的问题,那也很棒。

谢谢

【问题讨论】:

您确定您的标签设置正确吗?您可能无法使用&lt;? ... ?&gt;,可能需要使用&lt;?php ... ?&gt; @Dutchie432 感谢您的回复,我很确定我需要使用短标签,因为当我使用完整标签时,我收到一条错误消息,指出变量 $result 未定义或东西。 $result['count'] = $count; 行之后,如果你输入die($result['count']) - 你看到预期的结果了吗? @Dutchie432 再次感谢,这根本没有返回任何东西,所以它一定是 PDO 的问题。我确实收到通知,第 14 行 ($result['count'] = $count;) 上有一个未定义的变量“计数”,我不太明白,因为我在该行中定义了该变量......有什么想法吗?谢谢 您需要再次检查。你永远不会定义$count 【参考方案1】:

你应该有:

$count = $result['count'];

代替:

$result['count'] = $count;

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

在您的更新语句中,您可以这样做,而不是使用您的计数变量:

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

【讨论】:

以上是关于jQuery/AJAX post() - 一些问题的主要内容,如果未能解决你的问题,请参考以下文章

将 jquery ajax POST 请求更改为 fetch api POST

jQuery Ajax Post 更改对象结构

jQuery Ajax实例 ($.ajax_$.post_$.get)

Jquery Ajax post方法给出空值

使用 Laravel 将 jQuery Ajax POST 请求作为 GET 发送

jquery ajax'post'调用