これに関連: 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 この男がそれをどのように行ったかを確認するために、私は正しく従ったと確信していますか? 誰が私が間違っているのか教えてください。