我是JQuery自动完成功能的新手。我想让这段代码正常工作。每次有人输入输入字段时,下面的代码都会正确执行ajax轮询。但是它不会下拉自动完成。
$(document).ready(function() {
$("#search").autocomplete({
source: 'cityajax'
});
});
这是从服务器成功提取的文件。 mime / content类型设置为text / json。
['Overland Park','Hiawatha','Columbus','Lenexa','Pittsburg','Dodge City','Mission']
当实际的源设置为javascript本身的内联JSON var时,同样的工作正常。这个问题简直就是一个愚蠢的问题,但我花了一个半小时的时间试图弄清楚什么是错的,而且我遇到了障碍。我错过了某种必需的参数吗?
编辑:将我的“json”更改为此有效JSON,仍然是同样的问题。
{"1": "Overland Park","1": "Hiawatha","1": "Columbus","1": "Lenexa","1": "Pittsburg","1": "Dodge City"}
编辑:再次改变我的“json”。
[{"1": "Overland Park"},{"2": "Hiawatha"},{"3": "Columbus"},{"4": "Lenexa"},{"5": "Pittsburg"},{"6": "Dodge City"}]
编辑:改变了我的“json”,一切都很好。
[{“label”:“Overland Park”},{“label”:“Hiawatha”},{“label”:“Columbus”},{“label”:“Lenexa”},{“5”: “Pittsburg”},{“label”:“Dodge City”}]
答案 0 :(得分:1)
您使用的方法绝对不会起作用。我想问你怎么知道数据肯定会到达那里。你是通过Firebug在XHR中看到的吗?如果你没有使用插件的远程源功能,你如何调用它?
你定义它的方式,没有文件扩展名。因此,它将源设置为名为cityajax的字符串,该字符串无效。如果您的数据源是一个名为cityajax的变量,那么您可以将该变量放在那里而不带引号。
Jsonlint可让您测试数据的有效性。
答案 1 :(得分:1)
自动完成的简单示例:
$( "#test" ).autocomplete({
source: "search.php"
})
在search.php中
<?php
echo [{"label":"Overland Park"},{"label":"Hiawatha"}]
?>
如果您想要本地搜索,而不是Ajax,请使用以下代码
var cityajax = ['Overland Park','Hiawatha','Columbus','Lenexa','Pittsburg','Dodge City','Mission']
$(document).ready(function() {
$("#search").autocomplete({
source: cityajax
});
});