【问题标题】:Jquery auto complete results appear as individual letters, not wordsJquery 自动完成结果显示为单个字母,而不是单词
【发布时间】:2026-02-01 08:20:06
【问题描述】:

我正在使用 jquery 在文本字段中捕获用户输入,然后显示可能选项的下拉列表。

脚本调用一个 php 页面,该页面搜索并将结果返回给 ajax 请求。

当 PHP 返回多个值时,它们看起来像

["Site 4,"Site 2","Site 1","Site 6","Site 7","Site 0"]

单个值看起来像

["Site 4"]

我在下拉列表中得到的内容如下(基于单个条目)

[
LINE
"
S
i
t
e
LINE
4
"
]

其中 LINE 是 Site4 之间的分隔符,并显示引号和括号。

我的 Jquery 是:

   $('#site').autocomplete({
    source: function( request, response ) {
        $.ajax({
            url : 'siteCheck.php?name=' + request.term,
            success: function( data ) {
                console.log (data)
                response( $.map( data, function( item ) {
                    return {
                        label: item,
                        value: item,
                        data : item
                    }
                }));
            }
        });
    },
    autoFocus: true,            
    minLength: 1,
        select: function( event, ui ) {
            $('#site').val(ui);
        }               
    }); 

如何让这个下拉列表返回为

Site 4
Site 2
Site 1
Site 6
Site 7
Site 0

而不是单个字母!

谢谢

【问题讨论】:

    标签: php jquery autocomplete jquery-ui-autocomplete


    【解决方案1】:

    首先:您的 json 数组的第一个元素没有关闭 " 是不是错字?

    第二:根据自动完成文档source,将数组作为简单数组传递就足够了,就像你已经拥有的那样。无需将其转换为带有标签/值的东西。

    remote datasource的例子中,他们只是添加了source: 'remoteScript.php'

    所以你可以使用

    $( '#site' ).autocomplete({
        source: 'siteCheck.php?name=' + request.term,
        autoFocus: true, 
        minLength: 1,
        select: function( event, ui ) {
            $('#site').val(ui);
        }
    }); 
    

    编辑:

    尝试修改您的服务器端脚本以接受 term 作为 GET 参数,然后您的 URL 可以删除该部分,并添加术语,因为自动完成会为您完成:

     source: 'siteCheck.php', //should accept term as parameter
    

    【讨论】:

    • 感谢您的回复,是的,这是一个错字!我会试试这个,让你知道我的进展情况。
    最近更新 更多