jQuery-AJAX将下拉列表重新绑定到存储过程的结果

web*_*orm 2 asp.net jquery dynamic-rebinding

我有一个很长的人名的下拉列表.多达2,000个名字.我想通过将下拉列表限制为一次一个名称的子集,更容易找到用户感兴趣的名称.我通过创建一系列26个链接(A,B,C ... Z)来完成此操作,这些链接调用后面代码中的方法,该方法仅使用用户单击的字母开头填充下拉列表.

这一切都运行良好,但我希望能够使用AJAX完成下拉列表的更新,而无需刷新页面.我想将jQuery用于AJAX功能而不是ASP.NET AJAX.

我的问题是我不知道如何执行存储过程然后通过jQuery AJAX用新数据集"重新绑定"下拉列表.可能提供和示例或演练的任何建议或资源?谢谢.

Mar*_*man 6

一些方向给你.

首先创建一个页面,webservicehttphandler,它将接收你的帖子并返回json.

处理器:

public void GetNames(HttpContext context)
{
    context.Response.ContentType = "application/json";
    context.Response.ContentEncoding = Encoding.UTF8;

    var results = DataAccess.GetNames(context.Request["letter"]);

    string json = //encode results to json somehow, json.net for example.

    context.Response.Write(json );
}
Run Code Online (Sandbox Code Playgroud)

标记

<ul>
  <li>A</li>
</ul>

<select id="names">
</select>
Run Code Online (Sandbox Code Playgroud)

要执行$ .post的脚本

$(function(){
  $("li").click(function(){
    var letter = $(this).text();
    $.post("SomeUrl/GetNames", {letter: letter}, function(data){
     var $sel = $("#names").empty();
     $.each(data, function(){
       //this assumes the json is an array in the format of {value: 1, name:'joe'}
       $sel.append("<option value='" + this.value + "'>" + this.name+ "</option>");
     });
    }, "json");
  });
});
Run Code Online (Sandbox Code Playgroud)

这应该是如何完成任务的一个很好的概述.

一些额外的资源.