-1

我已经将我的脚本上传到 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 );
    }
}

?>
4

1 回答 1

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 查询,添加单个关键字并使用ORor将它们链接在一起AND

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

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

于 2013-02-28T01:20:29.443 回答