2011-06-17 31 views
2

我是JQuery的自动完成功能的新手。我试图让这个代码正常工作。下面的代码在每次有人输入到输入字段时都会正确执行ajax poll。但是,它不会下拉自动完成。如何获取JQuery自动完成以使用Ajax和JSON?

$(document).ready(function() { 
    $("#search").autocomplete({ 
    source: 'cityajax' 
    }); 
}); 

这是从服务器成功提取的文件。 MIME /内容类型设置为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”}, :“Pittsburg”},{“label”:“道奇城”}]

+1

JSON不是一个数组,但总是用'{...}'包装。您需要获取数据,将数组解析出来并将该数组传递给'.autocomplete'。 – pimvdb

+1

试试这个:[{'label':'Overland ..'},{'label':'Anonymus'}],旁边是1,2,3使用标签 –

回答

1

您使用的方法绝对不行。我会质疑你如何知道数据肯定会到达那里。您是否通过Firebug在XHR中看到它?如果你不使用插件的远程源代码功能,你怎么调用它?

你已经定义了它的方式,没有文件扩展名。因此,它将源设置为名为cityajax的字符串,该字符串无效。如果你的数据源是一个名为cityajax的变量,那么你可以把那个变量放在那里而不用引号。

Jsonlint将允许您测试您的数据的有效性。对于autocomplet

+0

这是Kohana MVC框架,没有.php扩展名,因此它是有效的,并且调用通过Firebug的净视图进行。我改变了我的“json”到这个有效的JSON。 {'1':'陆上公园','1':'Hiawatha','1':'哥伦布','1':'列涅萨','1':'匹兹堡','1':'道奇城市'} – Caimen

+1

这个JSON不好,试试这个[{'label':'Overland ..'},{'label':'Anonymus'}] –

+0

最后我的问题是没有有效的JSON,upvote for Jsonlist,非常有帮助。 – Caimen

1

简单的例子:

$("#test").autocomplete({ 
      source: "search.php" 
         }) 

在search.php中

<?php 
    echo [{"label":"Overland Park"},{"label":"Hiawatha"}] 
?> 

如果你想有一个本地搜索,而不是阿贾克斯不是使用下面的代码

var cityajax = ['Overland Park','Hiawatha','Columbus','Lenexa','Pittsburg','Dodge City','Mission'] 

$(document).ready(function() { 
    $("#search").autocomplete({ 
    source: cityajax 
    }); 
}); 
+0

最后,我的问题是没有有效的JSON。 – Caimen