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

问题描述:

我正在使用jquery在文本字段中捕获用户输入,然后显示可能选项的下拉列表。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 

,而不是单个字母!

感谢

首先:它是一个错字,你的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 
+0

感谢您的回复,是的,这是一个错字!我会试试这个,让你知道我是怎么做到的。 – Tom

+0

完美无瑕,完全符合我的需求,谢谢:) – Tom