jquery - 如何将自动完成功能连接到文本框?

标签 jquery asp.net vb.net .net-1.1

相关:jquery doesnt 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 等时,当我在文本框中键入内容时,我在开发人员工具控制台中没有看到任何错误弹出。所以我不确定这是否有效。我尝试遵循这个 stackoverflow 答案:https://stackoverflow.com/a/7729147/168703 看看这个人是如何做到的并且我很确定我遵循的是正确的?谁能告诉我我做错了什么。

最佳答案

在 Chrome 工具上,转到“网络”选项卡。使用“清除”按钮删除所有条目,然后开始在文本框中键入内容。如果自动完成工作正常,一个条目应该出现在您的面前(在网络选项卡上),单击它应该会为您提供有关正在发生的情况的详细信息。

enter image description here

在上面的示例中,我收到了对用于自动完成的通用处理程序的调用。由于您使用的是 1.1 并且使用 Web 服务(如果我理解正确的话),您应该会看到 Web 服务调用或类似的内容。

关于jquery - 如何将自动完成功能连接到文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955828/

相关文章:

asp.net - 列出 ASP.NET 面试主题

c# - ASP.Net MVC 回发格式化的时间跨度

asp.net - SQL Server - 存储敏感数据

vb.net - 在 DataRowState.Modified 中合并两个相同的 DataTables 结果

ios - 使用 vb.net 将包含文件的文件夹导入到越狱的 iPhone 中

javascript - 如何替换 jQuery DOM 元素中的字符串

javascript - 如何仅在一个div Angular 2中运行函数

VB.net ComboBox 在输入时自动下拉

jquery - 使浏览器窗口非常短时使标题全宽

javascript - Jquery Ajax 安全问题