嗨,有人可以看一看,让我知道我要去哪里了。我正在尝试使jQuery UI自动完成工作。这是我的代码:这是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>
这是“汽车”股利
<div id="searchTxtFieldDiv"> <p><input type="text" id="auto" /></p> </div>
当我使用Firebug查看呼叫时,我看到search.php返回了
[{"Title":"Sin City"}]
jQuery只是显示未定义的任何想法?
看看jquery ui自动完成文档。您返回的JSON与自动完成功能所寻找的不匹配。您返回的对象必须具有名为label或value(或两者)的属性。
您可以尝试以下选项:
更改返回的JSON以包括标签/值属性,例如:
[{"label":"Sin City"}]
从示例中,它似乎还使用了id属性。我相信以上是自动完成显示值列表的最低要求。我认为您还可以返回一个字符串数组,它将以与上述完全相同的方式呈现它。
[ "Sin City", "Etc" ]
更改私有_renderItem函数的自动完成功能,以使用您的自定义属性,如以下自动完成示例所示(未测试):
$( "#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 ); };
这有点灵活,但恕我直言。