-2

PHP页面:

<?php

include "linkpassword.inc";

function showVotes()
{
 $showresult = mysql_query("SELECT * from mms") or die("Invalid query: " . mysql_error());
 $row = mysql_fetch_assoc($showresult);
}

function addVote() 
{
 $sql= "UPDATE mms SET votes = votes+1 WHERE color = '".$_POST['color']."'";
 $result= mysql_query($sql) or die(mysql_error());
 return $result;
}


addVote();
showVotes();

?>

我正在尝试将数组的输出加载到 JavaScript 页面中,在该页面中我可以将数组分解为单独的 div,这些 div 具有分配给它们的 ID。这是我尝试过的

<script>
$(document).ready(function () {
    $('.answer').click(function (e) {
        var color = $(this).attr("data-color");
        $.ajax({
            type: 'POST',
            url: 'mm.php',
            data: { color: color},
            dataType: 'json',
            cache: false,
            success: function(showVotes) {
                $('#rvotes').html(showVotes[0]);
            },
            error: function (jqXHR) {
            }
        })
    })
});
</script>

我哪里错了??

4

1 回答 1

1

从您在评论中发布的内容来看,您所拥有的是一组对象.. 而不是 html,正如您的函数所表明的那样。根据您想要完成的操作,答案将是以下之一,以访问该对象的属性:

showVotes[0].votes

或者

showVotes[0]['votes']

例如:

$('#rvotes').html(showVotes[0].votes);

或者等等。

第二次尝试:

首先,将您当前的“showVotes”功能更改为:

function showVotes()
{
 $showresult = mysql_query("SELECT * from mms") or die("Invalid query: " . mysql_error());
 while ($row = mysql_fetch_assoc($showresult)) {
     $response[] = $row;
 }
 return json_encode($response);
}

其次,从页面中删除您的“连接成功”文本,以及由其他任何内容生成的任何其他文本(也就是返回结果指针的另一个函数)。我可能错了,但在我看来,其他文本的生成导致返回的 json 被解释为格式错误。

关于 PDO 的快速解释:

try {
    $dbh = new PDO("mysql:host=localhost;dbname=dbname", "user", "password");
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (\PDOException $e) {
    echo "Error!  Could not connect to database: " . $e->getMessage() . "<br/>";
    die();
}

连接到数据库..这就是我学会的方法,尽管我被警告(并且反对)不要以这种方式检查错误,尽管从未解释过为什么。

数据库交互:

$stmt = $dbh->prepare("UPDATE mms SET votes = votes+1 WHERE color = :color");
$stmt->bindParam(":color",$_POST['color']);
$stmt->execute();

结果使用:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $response[] = $row;
}

等等等等。PDO 为您转义值,因此您不必担心注入攻击。

于 2013-03-05T02:54:15.800 回答