1

与此相关:如何将自动完成功能连接到文本框?

我试图将自动完成(来自 jquery ui)链接到文本框。我有以下内容:

$("#txtTags").autocomplete({
        minLength: 0,
        source: function(request, response) {   
            $.ajax({
                type: "POST",
                url: "GetTags.asmx/GetTags",
                dataType: "xml",
                contentType: "text/xml; charset=utf-8",
          success: function(xml) {
               alert("hi");
               // Completion logic goes here
          },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        },    
    });

为什么我不能alert从成功函数或错误函数中得到?我必须使用 dataType XML,因为我在一个古老的.net 1.1应用程序上 json/jsonp 当时不支持(2002/2003)。GetTags.asmx 是我的网络服务方法。但是,当我在我的文本框中键入时,我当然没有收到任何错误,也没有收到自动完成选择。

更新:

修复了成功问题,所以我确实进入了成功功能,问题是我的自动完成文本框怎么还是空的?在我在这个问题顶部发布的第一个链接中,我已经从数据库中获取了我的自动完成数据,我将它存储为一个字符串数组,并在我的 webmethod 中返回它。我必须在 jquery 中做什么才能获取这些数据?

编辑 2

这是我从 chrome / 运行 webservice (.asmx) 文件后的 xml 文件,即:

This XML file does not appear to have any style information associated with it. The document tree is shown below.


 <ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/quikfix.jakah.com/GetTags">
    <string>.net</string>
    <string>.net-1.1</string>
    <string>3g</string>
    <string>6283</string>
    <string>7641</string>
    <string>8-id</string>
    <string>80070005</string>
    <string>accounts</string>
    <string>actions</string>
    <string>activation</string>
    <string>active-directory</string>
    <string>active-directory</string>
    <string>ad</string>
    <string>addin</string>
    <string>adp</string>
    <string>adp-tlm-interface</string>
    <string>adptlm</string>
    <string>adupdater</string>
    <string>ajax</string>
 </ArrayOfString>
4

2 回答 2

1

将函数用于源选项时,您最终必须将数组传递给响应方法。

source: function(request, response) {
    ...
        response(thearrayofdata);
    ...
}
于 2013-04-11T19:34:28.430 回答
1

从您的 xml 创建数组并将其传递给这样的响应 -

 success: function(xml) {
    var data = [];    
    $(xml).find('string').each(function(){ 
         data.push($(this).text());
    });
    response(data);
},
于 2013-04-11T20:02:37.213 回答