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成功関数またはエラー関数から取得できないのはなぜですか? .net 1.1当時 (2002/2003) はサポートされていなかった古いアプリケーション json/jsonpを使用しているため、dataType XML を使用する必要があります。GetTags.asmx は、私の Web サービス メソッドです。もちろん、テキストボックスに入力してもエラーは発生せず、オートコンプリートの選択もありません。

アップデート:

成功の問題を修正したので、成功関数にたどり着きました。質問は、オートコンプリート テキストボックスがまだ空になっているのはなぜですか? この質問の上部に投稿された最初のリンクでは、既にデータベースからオートコンプリート データを取得しています。それを文字列配列として保存し、webmethod で返します。このデータを取得するには、jquery で何をする必要がありますか?

編集 2

これは、chrome / ie から 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 オプションに関数を使用する場合、最終的に配列を response メソッドに渡す必要があります。

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 に答える