2

これに関連: jquery doesn't go to error or success

テキストボックスにオートコンプリートを追加する必要がある古い 1.1 asp.net/vb.net プロジェクトがあります。.asmx (Web サービス ファイル) を次のように記述しました。

 <WebMethod()> _
    Public Function GetTags() As String()
        Dim arr() As String = BindTags()
        Return arr
    End Function
    Private Function BindTags() As String()
        Dim cmdSelect As SqlCommand
        Dim conMyData As SqlConnection
        Dim reader As SqlDataReader
        Dim myList As New ArrayList

        'try and make a connection   
        Try
            conMyData = New SqlConnection(ConfigurationSettings.AppSettings("strConn"))
            cmdSelect = New SqlCommand("select_tags_grid", conMyData)

            With cmdSelect
                .CommandType = CommandType.StoredProcedure
                'add parameters
                .Parameters.Add("@SortOrder", SqlDbType.TinyInt).Value = 1
                'check the clientid
                conMyData.Open()
                reader = cmdSelect.ExecuteReader(CommandBehavior.CloseConnection)
            End With

            While (reader.Read())
                myList.Add(CType(reader("Tag"), String))
            End While

            Dim arr() As String = CType(myList.ToArray(Type.GetType("System.String")), String())
            Return arr
        Catch e As Exception
            'clean up and close resources
            Throw e
        Finally
            cmdSelect = Nothing
            conMyData.Close()
            conMyData = Nothing
        End Try
    End Function

この .asmx ファイルを実行するとデータが表示されるため、これは正常に機能します。次に、.net 1.1 は json / jsonp 形式をサポートせず、xml を使用するという記事を読みました。そこで、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);
            }
        });
    },    
});

アプリを実行して、たとえば google chrome を使用すると、テキスト ボックスに入力しても開発者ツール コンソールにエラーが表示されません。したがって、これが機能しているかどうかはわかりません。私はこのスタックオーバーフローの答えに従おうとしました: https://stackoverflow.com/a/7729147/168703 この男がそれをどのように行ったかを確認するために、私は正しく従ったと確信していますか? 誰が私が間違っているのか教えてください。

4

1 に答える 1

0

Chrome のツールで [ネットワーク] タブに移動します。「クリア」ボタンを使用してすべてのエントリを削除してから、テキストボックスに入力を開始します。オートコンプリートが機能している場合は、(ネットワーク タブの) 目の前にエントリが表示され、それをクリックすると、何が起こっているかの詳細が表示されます。

ここに画像の説明を入力

上記の例では、オートコンプリートに使用する汎用ハンドラーへの呼び出しを取得しています。あなたは 1.1 を使用していて、Web サービスを使用しているので (私の理解が正しければ)、Web サービスの呼び出しまたは類似のものが表示されるはずです。

于 2013-04-11T22:32:00.943 に答える