在jquery自动完成中解析json的问题

我在jQuery自动完成中解析我的JSON数据时遇到了麻烦。 我的JSON来自这段代码:

  select top 10 lastname from info where lower(lastname) like '#theQ#%' order by lastname                 #serializedQuery# 

我将查询转换为结构数组,然后将其序列化为JSON。 现在,在jQuery自动完成中解析此JSON不起作用。 我得到的数据如下:

 [{"lastname":"abc"},{"lastname":"def"},{"lastname":"ghi"}] 

以下是自动完成的代码:

 $(document).ready(function() { $("#name").autocomplete("data/name.cfm",{ minChars:1, delay:10, autoFill:false, matchSubset:false, matchContains:1, cacheLength:10, selectOnly:1, dataType: 'json', parse: function(data) { var parsed = []; var dataParsed = $.parseJSON(data); for (var i = 0; i < dataParsed.length; i++) { parsed[parsed.length] = { data: dataParsed[i], value: dataParsed[i].lastname, result: dataParsed[i].lastname }; } return parsed; }, formatItem: function(item) { return item; } }); 

当我输入文本字段时,我将整个JSON字符串作为搜索结果。 我已经研究过其他代码进行解析但仍然无法使其正常工作。 有帮助吗? 谢谢。

参考文献:Simon Whatley自动完成; Ben Nadel查询结构数组并序列化为json

一个问题是,在你的for循环中,当你应该迭代到dataParsed.length时,你正在迭代到data.length

如果你使用Simon Whatley自动完成插件,根据他网站上的演示,该插件只是希望自动完成结果在各行上,例如:

 abc def ghi 

所以你应该摆脱你在jquery中提供的parse函数,并修改你的coldfusion脚本每行返回一个名称,即abc\ndef\n...不需要使用json或其他任何东西。 (至少那就是他的网站上的这个演示如何工作http://www.simonwhatley.co.uk/examples/autocomplete/jquery/data/country.php )

只是为了确认,你应该在你的parse()函数内部添加一个alert('aaa') ,我打赌你会发现它永远不会被调用。