我想实现一个自动完成输入字段,但是当我开始插入一些文本时,没有任何事情发生,一秒钟就会显示“忙碌的圆圈”,就是这样。 这是我的代码: HTML>
<div class="products-inv"><?php echo $product_name ?></div>
<input type="text" id="product_name" name="product_name" />
第一个div是测试用于显示显示良好的php变量值
jQuery和GT;
jQuery( function() {
function log( message ) {
jQuery( "<div>" ).text( message ).prependTo( "#log" );
jQuery( "#log" ).scrollTop( 0 );
}
jQuery( "#product_name" ).autocomplete({
source: "../route/to/search.php",
minLength: 2,
select: function( event, ui ) {
log( "Selected: " + ui.item.value + " aka " + ui.item.id );
}
});
});
和search.php文件内容&gt;
$query = 'database data';
$ db-&gt; setQuery($ query);
$ product_name = $ db-&gt; loadResult();
错误控制台为空。
感谢您的建议
答案 0 :(得分:0)
您的服务器端代码不会返回插件所需的数据。
来自jQuery autocomplete plugin关于来源选项的文档
使用字符串时,Autocomplete插件需要该字符串 指向将返回JSON数据的URL资源
您的search.php
脚本必须将您要建议的项目返回给用户(显示在自动填充列表中)
这是一个例子:
/*term is a parameter generated by the plugin and contains
the string the user has typed in the input*/
$_GET['term'] = isset($_GET['term']) ? $_GET['term'] : null;
//manage your own query depending on your database and preferred way for db interactions
//$query = "select product_name from product where product_name like ?";
//$term = "%{$_GET['term']}%";
//$stmt = $mysqli->prepare($query);
//$stmt->bind_param("s", $term);
//$stmt->execute();
//$result = $stmt->get_result();
$autocompleteList = [];
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$autocompleteList[] = $row['product_name'];
}
die(json_encode($autocompleteList));