2012-07-09 20 views
0

我试图让下面的代码的工作,应该显示从当下面的链接被点击我的数据库中的数据:(无需刷新页面)显示数据(JavaScript)的

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

不幸的是,它不工作,它不显示任何内容,也没有提供错误。

的index.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> 

query2.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); 
?> 
+1

尝试用'$(document).ready'处理程序包装您的javascript。 – Engineer 2012-07-09 12:54:18

+2

你可以自己做一些基本的调试...'query2.php'是否正确接收'vehicle_database_id'?它是否与任何行匹配? 'click'处理程序是否会触发?控制台中有任何错误?检查了您的网络查看器?这是一个很长的一系列事件......你需要缩小这部分目前不工作的部分。 – Matt 2012-07-09 12:54:22

回答

2

你通过JSON数据为 'success_handler',但数据并不功能

内处理
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/