Ajax搜索不会运行

时间:2013-02-28 01:13:41

标签: php jquery ajax pdo

我已将我的脚本上传到Fiddle,可在此处找到:http://jsfiddle.net/XdPk5/1/

我似乎无法让它运行,我正在尝试添加错误,例如行数= 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 个答案:

答案 0 :(得分:1)

这是错误的:

$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;
  • 如果输入了多个单词,则需要构建sql查询,添加单个关键字并使用ORAND将它们链接在一起。

此外,在您执行echo 'empty';的情况下,您没有返回有效的json。

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