如何将自动完成功能与 AJAX 一起使用


how to use autocomplete with ajax

im 使用 jqueryui 的自动完成 (http://jqueryui.com/autocomplete/#remote)来源来自"来源:"搜索.php"

此代码...

 $( "#name" ).autocomplete({
source: "search.php",
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
}); 
..下面的这段代码一起工作得很好!但是自动完成建议我"我的所有数据"!不像我的术语。

<?php
require('inc/tunel.php');
$keyword = $_POST['keyword'];
$respons = array();
$fetch_engine = $db->query("SELECT name FROM `engine`");
    while($read_engine = $fetch_engine->fetch(PDO::FETCH_ASSOC)) {
        $respons[] = $read_engine['name'];
        }
        echo json_encode($respons);
 ?>

我也在下面尝试了这段代码,我的问题解决了,但我不想在我的文档的"查看源代码"中看到我的数据!

$( "#name" ).autocomplete({
source: <?php
	require('inc/tunel.php');
	$respons = array();
	$fetch_engine = $db->query("SELECT name FROM `engine`");
		while($read_engine = $fetch_engine->fetch(PDO::FETCH_ASSOC)) {
			$respons[] = $read_engine['name'];
			}
			
			echo json_encode($respons);
			
?>,
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
}); 

您应该创建一个本地服务,该服务接受带有子字符串的参数(在我的示例中参数 q 至少包含 2 个字符)并返回带有可能标记的 json,然后将其用作自动完成的源作为 ajax 调用。

   $( "#name" ).autocomplete({          源: 函数( 请求, 响应 ) {           $.ajax({              网址: "http://yourwebservice.com/search",              数据类型: "jsonp",              数据:{                问:请求.期限              },              成功: 函数( 数据 ) {                响应( 数据 );              }            });          },          最小长度: 2        });