【问题标题】:how to update PHP variable with Jquery Ajax?如何使用 Jquery Ajax 更新 PHP 变量?
【发布时间】:2011-07-09 18:55:38
【问题描述】:

我正在制作一个简单的投票器,它接受“喜欢”或“不喜欢”的投票。然后,我计算喜欢和不喜欢的总数并输出总数。我想出了如何使用 Jquery Ajax 进行投票,但是投票后投票数不会更新。我想使用 Jquery Ajax 更新 $numlike$numdislike 变量。

这是与输出相关的 PHP 脚本:

$like = mysql_query("SELECT * FROM voter WHERE likes = 1 ");
$numlike = 0;
while($row = mysql_fetch_assoc($like)){ 
    $numlike++;
}

$dislike = mysql_query("SELECT * FROM voter WHERE likes = 0 ");
$numdislike = 0;
while($row = mysql_fetch_assoc($dislike)){  
    $numdislike++;
}

echo "$numlike like";
echo "<br>";
echo "$numdislike dislike";

更新: 用于上传投票的 Jquery Ajax

<script>
$(document).ready(function(){
    $("#voter").submit(function() {

    var like     = $('#like').attr('value');
   var dislike   = $('#dislike').attr('value');

        $.ajax({
            type: "POST",
            url: "vote.php",
            data: "like=" + like +"& dislike="+ dislike,   
            success: submitFinished
            });

            function submitFinished( response ) {
  response = $.trim( response );

  if ( response == "success" ) {
        jAlert("Thanks for voting!", "Thank you!");
        }

    return false;
    });
});
</script>

<form id="voter" method="post">
<input type='image' name='like' id='like' value='like' src='like.png'/>
<input type='image' name='dislike' id='dislike' value='dislike' src='dislike.png'/>
</form>

投票.php:

if ($_POST['like'])
{
    $likeqry  = "INSERT INTO test VALUES('','1')";
    mysql_query($likeqry) or die(mysql_error());
    echo "success";
}

if ($_POST['dislike'])
{
    $dislikeqry  = "INSERT INTO test VALUES('','0')";
    mysql_query($dislikeqry) or die(mysql_error());
    echo "success";
}

【问题讨论】:

  • 请告诉我这段代码是个玩笑。您正在使用最低效的行数计数方式。在结果集上使用mysql_num_rows() 效率会很低,但是您的代码在每一行上迭代会更糟。无论如何,使用SELECT COUNT(*) FROM 然后使用mysql_result($resultset, 0, 0) 来获取行数。
  • ^ SELECT COUNT(*) FROM voter WHERE like=0 会好很多
  • select like, count(*) from voter group by like 会更好:一个查询同时获得喜欢和不喜欢
  • 发送投票的 javascript 代码和读取投票并将其放入数据库的 PHP 代码在哪里?

标签: php jquery mysql ajax


【解决方案1】:

如果您想在点击后更改当前喜欢或不喜欢的数字,您必须返回结果而不是打印它!返回 json 结果并回显它并更改 div innerHTML 以查看新结果!

............
............
............
$dislike = mysql_query("SELECT * FROM voter WHERE likes = 0 ");
$numdislike = 0;
while($row = mysql_fetch_assoc($dislike)){  
    $numdislike++;
}

echo json_encode( array( $numlike, $numdislike ) ) ;
exit();

现在在您的 html 代码中:

       $.ajax({
            type: "POST",
            url: "vote.php",
            context:$(this)
            data: "like=" + like +"& dislike="+ dislike,   
            success: submitFinished(data)
            });

            function submitFinished( response ) {
  response = $.parseJSON( response );
  //Now change number of like and dilike but i don't know where are shown in your html
  $('#like').attr('value',response[0]);
  $('#dislike').attr('value',response[1]);
  return false;
    });

【讨论】:

  • 我没有用于输出的 html 部分。你能举个例子吗?
  • 嗯!我的意思是你的喜欢或不喜欢计数显示在哪里?分区?输入 ?您在哪里向用户显示此号码?你可以改变它的价值!
  • 在我发布的第一个 PHP 代码部分,我只是使用“echo $numlike”和“echo $numdislike”来显示投票数。我没有使用任何 div 来显示投票数。如何在不提交投票的情况下显示投票数?
  • 那么你的问题是什么?你说当我更新我的投票但投票后投票数没有更新!那么你是如何确定投票没有更新的呢?
  • 例如,当我点击“赞”按钮时,jquery Ajax 会将“赞”投票上传到 SQL 表中,但在网站本身上,我没有看到“赞”的数量增加基于“echo $numlike”结果的“喜欢”投票
【解决方案2】:

您可以将 $_GET 或 $_POST 变量发送到您使用 AJAX 调用的文件。

.load("google.com", "foo=bar", function(){ 

 });

【讨论】:

  • 你能用我的示例代码解释一下吗?我对 Jquery 和 Ajax 很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多