0

我有一个 jquery,它使用 ajax 和 webmethod 从数据库中检索值,它如下所示

$(document).ready(function() {
        SearchText();
    });
function SearchText() {
   $(".autosuggest").autocomplete({
            source: function(request, response) {
            $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "InsertPage.aspx/GetAutoCompleteData",
                    data: "{'username':'" + document.getElementById('name').value + 
                        "'}",
                    dataType: "json",
                    success: function(data) {
                        response(data.d);
                    },
                    error: function(result) {
                        alert("Error");
                    }
                });
            }
        });
    }
</script>

而网络方法是

[WebMethod]
public static List<string> GetAutoCompleteData(string username)
{
    List<string> result = new List<string>();
    using (SqlCommand cmd = new SqlCommand("select DISTINCT UserName from student_details 
           where UserName LIKE '%'+@SearchText+'%'", con))

    {
        con.Open();
        cmd.Parameters.AddWithValue("@SearchText", username);
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            result.Add(dr["UserName"].ToString());
        }

使用 ajax 的文本框是

<asp:TemplateField HeaderText="Student Name">
     <ItemTemplate>                    
        <input type="text" id="name" class = "autosuggest" />
   </ItemTemplate>
</asp:TemplateField>

如果我调试程序,此 ajax 文本框中的值将变为 null,并且文本框中的输出为空,因此我无法进一步将值存储在数据库中。

4

2 回答 2

0

很简单,controls没有的不会runat="server"将其价值回发到那里的服务器。

您只需要添加runat="server"该 texbox 才能在服务器上获取值。

<input type="text" id="name" class = "autosuggest" runat="server" />

如果它不起作用,您可以使用隐藏字段并使用自动完成事件。
并在回发时设置隐藏字段值。

于 2013-04-08T04:50:44.553 回答
0

您在输入中缺少“名称”,因此应该是

<input type="text" id="username" name="username" />

你也使用 jQuery,所以只需获取如下值:

$('#username').val(); //instead of document.getElementById()
于 2013-04-08T04:53:08.937 回答