0

我正在尝试使以下代码工作,当单击以下链接时应该显示我的数据库中的数据:(不刷新页面)

<a id="bugatti_link" href="#" database_id="Bugatti">Bugatti</a> 

不幸的是,它不起作用,它没有显示任何内容,也没有给出错误。

索引.php =

<a id="bugatti_link" href="#" database_id="Bugatti">Bugatti</a>

<script>
$("#bugatti_link").click(load_ajax);

function load_ajax(e) {
    var link = $(e.target); 
    var vehicle_database_id = link.attr("database_id");
    var ajax_params = {"brand": vehicle_database_id};
    $.getJSON("query2.php", ajax_params, success_handler)
}

function success_handler(data) {
    //data variable contains whatever data the server returned from the database.
    //Do some manipulation of the html document here. No page refresh will happen.
}
</script>

查询2.php =

<?php
$host = "xx";
$user = "xx";
$db   = "xx";
$pass = "xx";

$pdo = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);

$rows = array();
if(isset($_GET['brand'])) {
    $stmt = $pdo->prepare("SELECT brand FROM cars WHERE brand = ? ");
    $stmt->execute(array($_GET['brand']));
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);
?>
4

2 回答 2

2

您将 json 数据传递给“success_handler”,但该函数中未处理数据

于 2012-07-09T12:56:41.230 回答
0

请注意将 .error 添加到您的 $.getJSON 代码中。如果请求失败,这将告诉您原因。收到了回复,但它可能有问题,这会告诉你。请参阅下面的注释,了解为什么它可能会静默失败。

此外,最好在代码周围添加一个 $(document).ready 包装器,因为它可以确保页面在运行 javascript 之前已完全加载。根据浏览器和元素的嵌套方式,它可能已准备好附加事件,也可能未准备好。无论如何,最好将其放在准备好的文档中以确保始终可靠。

$(document).ready( function(){
    $("#bugatti_link").click(function(e){
        e.preventDefault();
        var vehicle_database_id = $(this).attr("database_id");
        var ajax_params = {"brand": vehicle_database_id};
        $.getJSON("query2.php", ajax_params, function(data){
            //data variable contains whatever data the server returned from the database.
            //Do some manipulation of the html document here. No page refresh will happen.
        })
        .error(function(data,msg,error){
            alert( msg );
        });
    });
})

重要提示:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误,请求通常会静默失败。因此,请避免频繁手动编辑 JSON 数据。JSON 是一种数据交换格式,其语法规则比 JavaScript 的对象文字表示法更严格。例如,在 JSON 中表示的所有字符串,无论是属性还是值,都必须用双引号括起来。有关 JSON 格式的详细信息,请参阅http://json.org/

于 2012-07-09T13:57:09.127 回答