我在显示jquery自动完成中的json变量时遇到问题 名称不会显示在自动完成的下拉框中 当我得到响应时,如何将每个变量分配给特定的文本框

我在显示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(

HTML:


默认情况下,插件需要字符串数组,而不是对象数组

你需要使用

:

来自本地数据、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);