【问题标题】:asp.net jQuery JSON autocompleteasp.net jQuery JSON 自动完成
【发布时间】:2011-11-03 12:28:02
【问题描述】:

我尝试了几种不同的方法,但似乎无法成功。

在 document.ready 中的 jQuery:

$('#<%=txtSearch.ClientID %>').keyup(function() {
        if ($('#<%=txtSearch.ClientID %>').val().length > 1) {
            $("#<%=txtSearch.ClientID %>").autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: "../cspm/s3.asmx/SearchSrn",
                        data: "{ 'prefixText': '" + request.term + "', count: '5' }",
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        dataFilter: function(data) { return data; },
                        success: function(data) {
                            response($.map(data.d, function(item) {
                                return {
                                    value: item.keyword
                                }
                            }))
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            alert(textStatus);
                        }
                    });
                },
                minLength: 2
            });

Asp.net 标记:

<asp:Label ID="lblSearch" runat="server" Text="Search: " Width="50px" /><asp:TextBox ID="txtSearch" runat="server" Width="450px" />

服务器端网络服务代码:

<WebMethod(), System.Web.Script.Services.ScriptMethod()> _
Public Function SearchSrn(ByVal prefixText As String, ByVal count As Integer) As String()

    Dim results As New ArrayList

    Dim searchText As String() = prefixText.Split(New Char() {" "c})

    sql = New StringBuilder()
    sql.Append("select rownum,b.* from ")
    sql.Append("(select distinct a.* from imsi_keyword_lookup_b a ")
    sql.Append("where keyword like upper('%" + searchText(0).ToUpper() + "%') ")

    For i As Integer = 1 To searchText.Length - 1
        If searchText(i) <> "" Then
            sql.Append("and keyword like '%" + searchText(i).ToUpper() + "%' ")
        End If
    Next

    sql.Append("order by rank desc) b ")
    sql.Append("where rownum <= 5 ")

    Using rdr As System.Data.IDataReader = db.ExecuteDataReader(sql.ToString())
        Dim counter As Integer
        While rdr.Read
            If (counter = count) Then Exit While
            results.Add(rdr("keyword").ToString())
            counter += 1
        End While
    End Using

    Dim ResultsArray(results.Count - 1) As String
    ResultsArray = results.ToArray(GetType(System.String))
    Return ResultsArray

End Function

【问题讨论】:

    标签: jquery asp.net json


    【解决方案1】:

    快速浏览一下您的代码;我相信服务器端方法应该是“共享”

    【讨论】:

    • 感谢您的回复。我不认为就是这样,我已经将同样的方法与 asp.net 自动完成扩展器一起使用,并且效果很好。似乎问题出在 jquery 中。
    • 是达到成功还是错误状态?还是根本不运行?
    • 我改为静态/共享方法,jquery 抛出错误。还有其他想法吗?
    • 什么错误?你能从错误函数中发布 XMLHttpRequest.responseText 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2010-09-23
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2011-07-02
    • 2011-01-24
    相关资源
    最近更新 更多