Jquery自动完成结果显示为单个字母,而不是单词

时间:2017-09-23 15:52:34

标签: php jquery autocomplete jquery-ui-autocomplete

我使用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是Site&之间的分隔符。 4显示引号和括号。

我的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

而不是单个字母!

由于

1 个答案:

答案 0 :(得分: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参数,然后您的网址可以删除部分,并添加术语,因为自动完成功能会为您完成:

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