我在显示jquery自动完成中的json变量时遇到问题 名称不会显示在自动完成的下拉框中 当我得到响应时,如何将每个变量分配给特定的文本框
HTML:我在显示jquery自动完成中的json变量时遇到问题 名称不会显示在自动完成的下拉框中 当我得到响应时,如何将每个变量分配给特定的文本框,jquery,json,autocomplete,Jquery,Json,Autocomplete,HTML: 默认情况下,插件需要字符串数组,而不是对象数组 你需要使用 : 来自本地数据、url或回调的数据可以分为两种 变体: 字符串数组: 具有标签和值属性的对象数组 您的json响应不是真正的数组,是吗?此外,您只能更新一个字段的自动完成 $("#name").autocomplete({ source: function callback(term, autocomplete) { $.getJSON("php/company.php?term="+term, function(
默认情况下,插件需要字符串数组,而不是对象数组 你需要使用 : 来自本地数据、url或回调的数据可以分为两种 变体: 字符串数组: 具有标签和值属性的对象数组 您的json响应不是真正的数组,是吗?此外,您只能更新一个字段的自动完成
$("#name").autocomplete({ source: function callback(term, autocomplete) {
$.getJSON("php/company.php?term="+term, function(data) {
// do the magic here: extract an option array from your data, e.g.
var arrayOfStrings = data.names;
autocomplete(arrayOfStrings);
});
});
我不明白你想对其他数据做什么,当你在数据库中搜索一个特定的名字时,你将无法自动完成电话号码输入字段,是吗
编辑:您的问题是json响应当前确实将最后一个匹配的名称作为对象输出。如果您将返回一个数组,则自动完成功能将非常有用。修复了几个错误:
$term = mysql_real_escape_string(strtolower($_GET["term"]));
$sql = "select ID,NAME,TEL from COMPANY where NAME like '%$term%' order by NAME";
$result = mysql_query($sql, DBCONN) or die ("{\"error\":\"" . mysql_error(DBCONN) . "\"}");
$output = array();
while($row = mysql_fetch_array($result)) {
$row_set = array(
"label" => $row['NAME'],
"value" => $row['NAME'],
"id" => $row['ID'],
"tell" => $row['TEL'] );
$output[] = $row_set;
}
echo json_encode($output);
如果将其设置为带有调整的ajax调用的自定义回调函数,请参见上文,现在可以在尝试提取数组之前检查data.error
现在,您可能需要使用自定义项目显示、聚焦和选择事件。例如
请参见链接示例的源,您可以显示自定义列表项
在上,您可以将id和tel设置为其相应的值,并且
在上,您可以冻结id并禁用输入
当我获得公司名称时,我想获得电话号码并将其显示在电话的文本框中。自动完成的意义是获得不止一个公司名称-您想用多个id/电话号码做什么?我想将公司的电话和id传递给其他输入。Tnxx对你的回答很有帮助!!我改变了我的代码,但仍然没有发生任何事情,也许错误是在我的php响应$inputautocomplete.autocomplete{source:php/company.php,minLength:0,焦点:函数事件,ui{$autocomplete.val ui.item.label;return false;},选择:函数事件,ui{$autocomplete.val ui.item.label;return false;}。数据自动完成。\u renderItem=function ul,item{return$.data item.autocomplete,item.append+item.label++item.desc+.appendTo ul;};
{"label":"MacDonald","id":"1","tel":"1-800-4444"}
$("#name").autocomplete({
....
focus: function( event, ui ) {
$( "#name" ).val( ui.item.label );
return false;
}
....
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "<br>" + item.id + "</a>" )
.appendTo( ul );
};
$("#name").autocomplete({ source: function callback(term, autocomplete) {
$.getJSON("php/company.php?term="+term, function(data) {
// do the magic here: extract an option array from your data, e.g.
var arrayOfStrings = data.names;
autocomplete(arrayOfStrings);
});
});
$term = mysql_real_escape_string(strtolower($_GET["term"]));
$sql = "select ID,NAME,TEL from COMPANY where NAME like '%$term%' order by NAME";
$result = mysql_query($sql, DBCONN) or die ("{\"error\":\"" . mysql_error(DBCONN) . "\"}");
$output = array();
while($row = mysql_fetch_array($result)) {
$row_set = array(
"label" => $row['NAME'],
"value" => $row['NAME'],
"id" => $row['ID'],
"tell" => $row['TEL'] );
$output[] = $row_set;
}
echo json_encode($output);