2011-11-03 2 views
1

안녕하세요, 저는 여러 가지 다른 방법을 시도했지만 제대로 작동하지 않는 것 같습니다. 누군가 아래 코드를 살펴보고 나에게 도움을 주시겠습니까? document.ready 내부asp.net jquery json autocomplete

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 

감사합니다,

나단

답변

0

코드를 간단하게 살펴보십시오. 나는 서버 측 방법이 '공유'되어야한다고 생각한다.

+0

답장을 보내 주셔서 감사합니다. 나는 그것이라고 생각하지 않는다, 나는 asp.net autocomplete extender와 같은 방법을 사용했다. 그리고 그것은 잘 동작했다. 문제가 jquery에있는 것 같습니다. – Nathan

+0

성공 또는 오류 상태에 도달 했습니까? 전혀 실행되지 않습니까? – Khodor

+0

정적/공유 메서드로 바뀌 었으며 jquery에서 오류가 발생했습니다. 다른 아이디어? – Nathan