2013-02-23 6 views
0

Я перепутал, чтобы сделать текстовое поле автозаполнения, используя jquery с указанным ниже кодом, но я не могу этого добиться, я получаю ошибку в jquery. Заранее спасибо.JQuery AutoComplete textbox Возвращаемая ошибка

AutoCompleteTextBox.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AutoCompleteTextBox.aspx.cs" Inherits="Ajax_Using_Jquery.AutoCompleteTextBox" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Ajax Auto Complete Using Jquery</title> 

     <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script> 
    <script type="text/javascript"> 
    var UserNameInput; 

    $(document).ready(function() { 

      $("#<%=txtName.ClientID %>").autocomplete({ 
       source: function (request, response) { 
        $.ajax({ 
         type: "POST", 
         //contentType: "application/json; charset=utf-8", 
         url: "AutoCompleteTextBox.aspx/getUserNames", 
         data: "{'TextBoxVal':'" + document.getElementById('<%=txtName.ClientID%>').value + "'}", 
         dataType: "json", 
         success: function (data) { 
          alert("success"); 
         }, 
         error: function (result) { 
          alert("error "); 
         } 
        }); 
       } 
      }); 
     }); 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <table> 
    <tr> 
    <td> 
    <div> 
    User Name : &nbsp;&nbsp; 
     <asp:TextBox ID="txtName" runat="server" ></asp:TextBox> 
    </div> 
    </td> 
    </tr> 
    </table> 
    </form> 
</body> 
</html> 

AutoCompleteTextBox.aspx.cs:

public List<string> getUserNames(string TextBoxVal) 
    { 
     string strCon; 
     List<string> objList = new List<string>(); 
     strCon = ConfigurationManager.ConnectionStrings["EmpNameFetch"].ConnectionString; 
     SqlConnection con = new SqlConnection(strCon); 
     SqlCommand cmd = new SqlCommand(@"select EmpName from newTb2 where EmpName like '%"+TextBoxVal+"%'", con); 
     con.Open(); 
     SqlDataReader objReader = cmd.ExecuteReader(); 

     while (objReader.Read()) 
     { 
      objList.Add(objReader["EmpName"].ToString()); 
     } 
     Response.Write(objList.ToString()); 
     con.Close(); 
     return objList; 

    } 
+0

Какую ошибку вы получаете? –

+0

Ошибка внутреннего сервера сервера Ошибка сервера в приложении «/». Неизвестный веб-метод getUserNames. Сведения об исключении: System.ArgumentException: Неизвестный веб-метод getUserNames – Vignesh

ответ

0

Для этого вместо вызова AutoCompleteTextBox.aspx page Я добавил новую услугу и назвал страницу asmx с добавлением этого фрагмента кода на странице asmx.cs.

[System.Web.Script.Services.ScriptService()]

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.Data.SqlClient; 
using System.Configuration; 

namespace Ajax_Using_Jquery 
{ 
    /// <summary> 
    /// Summary description for AutoCompleteFetchService 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    [System.Web.Script.Services.ScriptService()] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class AutoCompleteFetchService : System.Web.Services.WebService 
    { 


     [WebMethod] 
     public List<string> getUserNames(string TextBoxVal) 
     { 
      string strCon; 
      List<string> objList = new List<string>(); 
      strCon = ConfigurationManager.ConnectionStrings["EmpNameFetch"].ConnectionString; 
      SqlConnection con = new SqlConnection(strCon); 
      SqlCommand cmd = new SqlCommand(@"select EmpName from newTb2 where EmpName like '%" + TextBoxVal + "%'", con); 
      con.Open(); 
      SqlDataReader objReader = cmd.ExecuteReader(); 

      while (objReader.Read()) 
      { 
       objList.Add(objReader["EmpName"].ToString()); 
      } 

      con.Close(); 
      return objList; 

     } 

    } 
} 

В ASPX странице я закодированной как,

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AutoCompleteTextBox.aspx.cs" Inherits="Ajax_Using_Jquery.AutoCompleteTextBox" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Ajax Auto Complete Using Jquery</title> 
    <script type="text/javascript" src="JQuery/jquery-1.9.0.mini.js"></script> 
    <script type="text/javascript" src="JQuery/jquery-ui.min.js" ></script> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $(".autosuggest").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "AutoCompleteFetchService.asmx/getUserNames", 
        data: "{'TextBoxVal':'" + document.getElementById('txtName1').value + "'}", 
        dataType: "json", 
        success: function (data1) { 
         response(data1.d); 
         if (data1.d == "" || data1.d == null || typeof (data1.d) == 'undefined') { 

          response(["no search found"]); 
         } 
        }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert("error " + XMLHttpRequest); 
         alert("error " + textStatus); 
         alert("error " + errorThrown); 
        } 
       }); 
      } 
     }); 
    }); 
    </script> 
    <%-- <link href="StyleSheet/jquery-ui.css" type="text/css" rel="Stylesheet" />--%> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <table> 
    <tr> 
    <td> 
    <div> 
    User Name : &nbsp;&nbsp; 
     <input type="text" id="txtName1" class="autosuggest" /> 
    </div> 
    </td> 
    </tr> 
    </table> 
    </form> 
</body> 
</html> 
+0

dont't использовать встроенные параметры SQL, вы будете склонны к SQL-инъекции. Используйте SqlParameter, чтобы избежать инъекции sql. http://xkcd.com/327/ –

0

Я не знаю, какие ошибки вы получаете, но вы пробовали комментарий линия ниже ? Вы уже отправляете ответ, нет необходимости писать ответ явно. Возможно, вы захотите также преобразовать свой метод в веб-метод.

Response.Write(objList.ToString()); 
+0

Ошибка внутреннего сервера сервера Ошибка сервера в '/' Application. Неизвестный веб-метод getUserNames. Сведения об исключении: System.ArgumentException: Неизвестный веб-метод getUserNames – Vignesh

0

вы должны сделать этот метод следующим образом:

[WebMethod] 
public List<string> getUserNames(string TextBoxVal) 
{ 
    string strCon; 
    List<string> objList = new List<string>(); 
    strCon = ConfigurationManager.ConnectionStrings["EmpNameFetch"].ConnectionString; 
    SqlConnection con = new SqlConnection(strCon); 
    SqlCommand cmd = new SqlCommand(@"select EmpName from newTb2 where EmpName like '%"+TextBoxVal+"%'", con); 
    con.Open(); 
    SqlDataReader objReader = cmd.ExecuteReader(); 

    while (objReader.Read()) 
    { 
     objList.Add(objReader["EmpName"].ToString()); 
    } 
    //Response.Write(objList.ToString()); 
    //remove the above because you can not use Resonse.Write here 
    con.Close(); 
    return objList; 

} 

Использование Try поджигатель плагин это даст вам много информации об ошибке вы получите

+0

Я удалил ответ response.write, но ошибка сохраняется. В firefox xhr показывает 200 ok, но в предупреждении об ошибке jquery отображается – Vignesh

+0

Я не использую веб-сервис, я использую тот же (AutoCompleteTextBox.aspx & AutoCompleteTextBox.aspx.cs) – Vignesh

+0

у вас может быть [WebMethod] внутри любого кода в приложении asp.net – BMW