如何让JQuery Autocomplete与Ajax和JSON一起使用?

时间:2011-06-17 17:25:51

标签: jquery ajax json autocomplete

我是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”}]

2 个答案:

答案 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
  });
});