尝试使JQuery自动完成在Asp.Net页面上工作

尝试使JQuery自动完成在Asp.Net页面上工作,jquery,autocomplete,jquery-autocomplete,Jquery,Autocomplete,Jquery Autocomplete,有人能解释一下这个问题吗 我有以下资料: $(document).ready(function () { $("#txtFirstContact").autocomplete({url:'http://localhost:7970/Home/FindSurname' }); }); 在我的Asp.Net页面上。http请求是MVC控制器上的一个函数,代码如下: Function FindSurname(ByVal surname As String, ByVal cou

有人能解释一下这个问题吗

我有以下资料:

    $(document).ready(function () {
    $("#txtFirstContact").autocomplete({url:'http://localhost:7970/Home/FindSurname' });
});
在我的Asp.Net页面上。http请求是MVC控制器上的一个函数,代码如下:

    Function FindSurname(ByVal surname As String, ByVal count As Integer)
    Dim sqlConnection As New SqlClient.SqlConnection
    sqlConnection.ConnectionString = My.Settings.sqlConnection
    Dim sqlCommand As New SqlClient.SqlCommand

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & surname & "%'"

    sqlCommand.Connection = sqlConnection

    Dim ds As New DataSet
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand)
    da.Fill(ds, "Contact")
    sqlConnection.Close()

    Dim contactsArray As New List(Of String)
    For Each dr As DataRow In ds.Tables("Contact").Rows
        contactsArray.Add(dr.Item("ConSName"))
    Next
    Return Json(contactsArray, JsonRequestBehavior.AllowGet)

End Function
据我所知,控制器正在返回JSON数据,但我不知道函数参数是否正确,或者返回的格式是否可由AutoComplete插件解释


如果有人能帮上忙,我将不胜感激。

函数需要接受一个名为q的参数,该参数包含搜索文本。可以使用extraParams选项传入计数,但默认情况下不会传入

我在MVC控制器操作中返回的内容实际上是使用StringBuilder.AppendLine为搜索结果中的每条记录构建的新行分隔列表


这是一个在MVC中使用的非常好的例子,它几乎可以正常工作,当然现在没有得到任何错误,但同样也没有得到任何结果

我现在使用了新版本的JQuery,它内置了自动完成功能,现在我在文本框中得到了我以前没有得到过的动画滚轮,所以希望这是一个好迹象

我的MVC功能是:

    Function FindSurname(ByVal q As String, ByVal limit As Integer) As String
    Dim sqlConnection As New SqlClient.SqlConnection
    sqlConnection.ConnectionString = My.Settings.sqlConnection
    Dim sqlCommand As New SqlClient.SqlCommand

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & q & "%'"

    sqlCommand.Connection = sqlConnection

    Dim ds As New DataSet
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand)
    da.Fill(ds, "Contact")
    sqlConnection.Close()
    Dim a As New StringBuilder
    For Each dr As DataRow In ds.Tables("Contact").Rows
        a.Append(dr.Item("ConSName"))
        a.AppendLine()
    Next
    Return a.ToString
End Function
aspx页面上的脚本是:

    $(document).ready(function () {
    $("#txtFirstContact").autocomplete({    source: 'http://localhost:7970/Home/FindSurname/',
                                            minLength: 2
                                        });
});
同样,minLength参数似乎也可以正常工作,因为动画轮子在我输入第二个角色之前不会“启动”


任何额外的提示都将不胜感激。

谢谢Dan,你使用的是什么版本的JQuery,或者实际上是什么版本的autocomplete插件,因为你所说的完全有道理,但这对我来说不起作用,我想知道我是否有不同的插件和/或版本。我使用的是JQuery 1.3.2,但是jquery.ui.autocomplete.js文件上没有版本号,但是文件头包含以下行修订:$Id:jquery.autocomplete.js 5785 2008-07-12 10:37:33Z joern.zaeffer$Dunno如果这有帮助的话谢谢Dan,非常感谢你的帮助。目前尚未解决,但将喝杯咖啡继续研究。再次感谢你,不用担心。如果你仍然不能让它工作后,评论回来,我会看看我是否可以敲出一个工作样本。