jQuery自动完成Mysql PHP

jQuery自动完成Mysql PHP,php,jquery,mysql,autocomplete,Php,Jquery,Mysql,Autocomplete,嗨,谁能看看这个,告诉我哪里出了问题。我正在尝试让jQueryUIAutoComplete工作。这是我的代码: 这是search.php include "db_connect.php"; $search = $_GET['term']; $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something wen

嗨,谁能看看这个,告诉我哪里出了问题。我正在尝试让jQueryUIAutoComplete工作。这是我的代码: 这是search.php

include "db_connect.php";
$search = $_GET['term'];    
    $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong');
    $rows = array();
    while ($row = mysql_fetch_assoc($result)){
        $rows[] = $row;

    }
print json_encode($rows);
?>
这是我的javascript内联脚本

<script type="text/javascript">
    $(document).ready(function()
    {
        $('#auto').autocomplete(
        {
            source: "./search.php",
            minLength: 3
        });
    });
</script>
jQuery只是显示未定义的
有什么想法吗?

至少在$search上运行mysql\u real\u escape\u string(),然后再将其插入SQL查询

源代码:javascript中的位可能把它搞砸了。您应该删除该选项。如果“search.php”位于documentroot目录的“顶部”


Firebug可能也会帮助你在沟通上达到顶峰

我想说的是,始终清理用户输入

很难说,因为我从未使用过jqueryautocomplete,但我认为应该将“#auto”的值作为目标。类似这样的内容:$('#auto').val().autocomplett

看看。返回的JSON与autocomplete要查找的内容不匹配。返回的对象必须具有名为label或value(或两者)的属性

您可以尝试以下选项:

选项1:更改返回的JSON 更改返回的JSON以包含标签/值属性,例如:

[{"label":"Sin City"}]
从示例来看,它似乎也使用id属性。我相信以上是自动完成显示值列表的最低要求。我认为您还可以返回一个字符串数组,它将以与上面完全相同的方式呈现它

[ "Sin City", "Etc" ]
    
选项2:更改私有渲染函数 将autocomplete的private _renderItem函数更改为使用自定义属性,如下所示(未测试):

$(“#项目”).autocomplete({
来源:“./search.php”,
最小长度:3
})
.数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append(项.标题) .附录(ul); };
    这有点灵活,但更丑陋。

    @Shaun 谢谢,伙计,有时候你只需要有人指出显而易见的事情。 我最终让它工作的方式是

        include "db_connect.php";
    $search = protect($_GET['term']);   
        $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong');
    
        $json = '[';
            $first = true;
            while ($row = mysql_fetch_assoc($result))
            {
                if (!$first) { $json .=  ','; } else { $first = false; }
                $json .= '{"value":"'.$row['Title'].'"}';
            }
            $json .= ']';
            echo $json;
    

    是的,我已经在我的db_connect.php文件中完成了mysql_real_escape_string(),但我认为在这个实例中它并不重要,我可以在它工作后保护它。更改绝对路径“/”没有效果。是的,谢谢。我认为最好是包含我遇到问题的代码,而不是使用与手头问题无关的代码。谢谢你的代码片段,但我担心它不起作用。你使用的是哪种自动完成功能?@Kristofer是1.8UI中的一种
    [ "Sin City", "Etc" ]
        
    
    $( "#project" ).autocomplete({
        source: "./search.php",
        minLength: 3    
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
       .data( "item.autocomplete", item )
       .append( item.Title )
       .appendTo( ul );
    };
    
        include "db_connect.php";
    $search = protect($_GET['term']);   
        $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong');
    
        $json = '[';
            $first = true;
            while ($row = mysql_fetch_assoc($result))
            {
                if (!$first) { $json .=  ','; } else { $first = false; }
                $json .= '{"value":"'.$row['Title'].'"}';
            }
            $json .= ']';
            echo $json;