为什么我的jQueryUI自动完成会将所有项目(来自XML)作为一条长线返回?

为什么我的jQueryUI自动完成会将所有项目(来自XML)作为一条长线返回?,jquery,xml,jquery-ui,jquery-ui-autocomplete,Jquery,Xml,Jquery Ui,Jquery Ui Autocomplete,我使用的是jQuery自动完成,但它将所有XML条目作为一个列表项而不是一个项/关键字返回 这是我的示例XML <keywords> <keyword>Hello</keyword> <keyword>asdfasd</keyword> <keyword>fsdgs</keyword> <keyword>Helqerqlo</keyword> <keyword>Hello<

我使用的是jQuery自动完成,但它将所有XML条目作为一个列表项而不是一个项/关键字返回

这是我的示例XML

<keywords>
<keyword>Hello</keyword>
<keyword>asdfasd</keyword>
<keyword>fsdgs</keyword>
<keyword>Helqerqlo</keyword>
<keyword>Hello</keyword>
<keyword>Hello</keyword>
<keyword>shjfg</keyword>
<keyword>zcxvv</keyword>
<keyword>Hello</keyword>
<keyword>fjhfhg</keyword>
<keyword>Hello</keyword>
<keyword>fdgs</keyword>
<keyword>gfhdgh</keyword>
<keyword>sdfgsdf</keyword>
<keyword>dfghd</keyword>
<keyword>xvcb</keyword>
<keyword>dfghdgh</keyword>
<keyword>Heldfghdglo</keyword>
</keywords>
这里是“自动完成”下拉列表中的唯一选项,所有关键字都合并为一个长关键字

HELLOASDFASDFSDGSDGSHELQERQLOHELLOHELLOSHJFGZCxVVHLLOFJHFGHGHELLOFDGSGFHDGHSDFGSDFGHDXVCBDFGHDGHELDFGHDGLO

感谢您的帮助

谢谢,
Thomas

您应该使用适当的jQuery工具来处理XML,这会使处理变得更简单:-

var data = $(xmlResponse).find("keyword").map(function() {
    return { value: $(this).text() };
}).get(); // by the way, what is this 'get' for?
另外,看看您的代码,对于一个简单的自动完成来说,这似乎相当冗长。你可以看看这个:

更新:

我认为问题在于,您需要映射xml的根元素。其中只有一个,这意味着,您只能从.map函数中获得一个结果。在jQuery站点上的示例中,xml的结构有点不同。所以我想试试这个,基本上和上面一样:

var data = $( "keyword", xmlResponse ).map(function() { // changed keywords to keyword
    return {
        value: $( this ).text() // changed $("keyword", this) to $(this)
    };
}).get();
我还没有测试过,但我认为,这应该可以解决问题。

你的问题是

value: $( "keyword", this ).text()
文本正在返回关键字的内部文本。。。简单的

您只需返回:

value: $( "keyword", this )

添加3级已修复此问题。。。示例-没有第三级xml,有什么方法可以做到这一点吗?1。get将jqueryed对象转换为实际数组。这个电话在这里很有必要。2.jQueryUI的autocomplete插件是您链接到的插件的继承者,事实上,作者建议使用jQueryUI插件。谢谢,这是直接从我的XML信息中复制的示例代码。。。我在网站的其他地方使用jqueryui,所以我更喜欢使用他们的自动完成,而不是包含更多的js。同样,不确定get的用途-来自autocomplete示例code@Andrew,感谢您对的澄清。获取。当然你是对的,jQueryUI自动完成应该读标题…好吧,现在我开始明白了,我的答案完全没有意义。即使使用.find而不是$…,xmlResponse基本上也是一样的:但我更新了我的答案,第二次尝试。。。
value: $( "keyword", this )