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

时间:2013-04-11 18:08:50

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

与此相关:jquery doesnt go to error or success

我有一个旧的1.1 asp.net/vb.net项目,我需要在文本框中添加自动完成功能。 我写了一个.asmx(网络服务文件):

 <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);
            }
        });
    },    
});

现在,当我运行我的应用并使用谷歌浏览器时,我在文本框中输入时看不到开发人员工具控制台中的任何错误。所以我不确定这是否有效。我尝试按照此stackoverflow回答:https://stackoverflow.com/a/7729147/168703 看看这家伙是怎么做到的,我很确定我是否正确地遵循了?任何人都可以告诉我我做错了。

1 个答案:

答案 0 :(得分:0)

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

enter image description here

在上面的例子中,我正在调用我用于自动完成的泛型处理程序。由于您使用的是1.1并且您使用的是Web服务(如果我没有正确理解),您应该看到Web服务调用或类似内容。