jQuery自动完成与本地字符串一起使用,但是当从服务器调用相同的String时则不行

这与我在如何在文档加载时立即进行AJAX调用时提出的问题有关

我试图得到一个由|分隔的字符串 服务器中的字符用作jQuery的.autocomplete()插件的输入。 如果我在代码中声明了一个局部变量,那么它工作正常,但是如果我尝试使用对服务器的ajax调用来定义此变量,即使警报显示我已填充变量“dataArray”,它也不起作用完全相同的字符。

我的代码(不起作用)是:

$(document).ready(function(){ $.ajax({ type: "GET", url: "../AutoComplete", success: function(data) { var dataArray = data; alert(dataArray); $("#example").autocomplete(dataArray); } }); }); 

警报中打印的值为:

“手稿|文字|信息对象|篮球|球|运动器材|狼蛛|蜘蛛|澳大利亚蜘蛛|板球运动员|中世纪人工制品|人物|运动员|莱昂纳多达芬奇|国家|语言|发明家|牧师|电子产品制造商|对象|信件| Artefact |治理模型|生物|动物“.split(”|“);

如果我这样做(虽然这不是解决方案):

 $(document).ready(function(){ $.ajax({ type: "GET", url: "../AutoComplete", success: function(data) { var dataArray = "Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula|Spider|Australian Spider|Cricket Player|Medieval Artefact|Person|Sportsperson|Leonardo Da Vinci|Country|Language|Inventor|Priest|Electronics Manufacturer|Object|letter|Artefact|governance model|Organism|Animal".split("|"); alert(dataArray); $("#example").autocomplete(dataArray); } }); }); 

自动完成工作正常吗?

不要将分割放在../AutoComplete脚本的输出中。 另外,摆脱报价。

换句话说,make ../AutoComplete返回:

 Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula|Spider|Australian Spider|Cricket Player|Medieval Artefact|Person|Sportsperson|Leonardo Da Vinci|Country|Language|Inventor|Priest|Electronics Manufacturer|Object|letter|Artefact|governance model|Organism|Animal 

然后做:

 dataArray = data.split("|"); 

看起来你的服务器正在返回字符串加上一段javascript代码。 警报以动物“.split(”|“)结束;您必须将该行作为javascript代码执行。

尝试重写您的代码,如下所示:

 success: function(data) { var dataArray = eval(data); $("#example").autocomplete(dataArray); } 

../AutoComplete返回.split("|");