2013-02-28 47 views
-1

我已经上传我的脚本小提琴,可以在这里找到:http://jsfiddle.net/XdPk5/1/AJAX搜索不会运行

我似乎无法得到它的运行,我想补充的错误,如行数= 0;而当空后已发送

的javascript:

 $(document).ready(function(){ 
      $(".search").click(function(){ 
       $.post(
        "search.php", 
        { keywords: $(".keywords").val() }, 
         function(data) { 
         $("div#search").empty(); 
         obj = JSON.parse(data); 
         $("div#search").append(obj.id + " " + obj.title); 
         }, 
        "json" 
       ); 
      }); 
     }); 

PHP:

<?php 
$db = new PDO('mysql:host=localhost;dbname=db','root',''); 

$keywords = (isset($_POST['keywords']) === true) ? $_POST['keywords'] : ''; 
if (empty($keywords) === true) { 
    echo json_encode("error"); 

} else { 
    $query = $db->prepare("SELECT `media`.`id`, `media`.`title` FROM `media` WHERE `media`.`title` LIKE :keywords"); 

    if ($query->rowCount() == 0) { 
     echo 'empty'; 

    } else { 
     $query->bindValue(':keywords', '%' . $keywords . '%', PDO::PARAM_STR); 

     $arr = array(); 
     $query->execute(); 
     while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
      $arr[] = array("id" => $row["id"], "title" => $row["title"]); 
     } 
     echo json_encode($arr); 
    } 
} 

?> 
+1

你应该添加你的JavaScript和PHP到你的问题。 – jeroen 2013-02-28 01:16:19

回答

1

这为w荣:

$query = $db->prepare("SELECT `media`.`id`, `media`.`title` FROM `media` WHERE `media`.`title` LIKE :keywords"); 

if ($query->rowCount() == 0) { 
    echo 'empty'; 

} else { 
    $query->bindValue(':keywords', '%' . $keywords . '%', PDO::PARAM_STR); 
  • 没有rowCount执行查询之前;
  • 如果输入了多个单词,则需要构建添加单个关键字并使用ORAND将它们链接在一起的sql查询。

此外,你在哪里做echo 'empty';你没有返回有效的json。

在javascript中,您可能的意思是dataType: "json"而不仅仅是"json",因为这不是一个有效的选项。

+0

我真的被卡住了,就要放弃。不过谢谢。 – sw0o0sh 2013-02-28 02:23:01