在更改第一个 ddl 时使用 jquery ajax 绑定下拉列表

Posted

技术标签:

【中文标题】在更改第一个 ddl 时使用 jquery ajax 绑定下拉列表【英文标题】:bind drop down list using jquery ajax on change of first ddl 【发布时间】:2013-05-29 15:04:12 【问题描述】:

我有两个下拉列表,第一个下拉列表的 onchange 我想在 ajax 中填充第二个。 我在 ajax 中获取 SelectListItem 如何将其传递给下拉列表以绑定它?

查看:

                @html.DropDownList("FirstID", ViewBag.Groups as IEnumerable<SelectListItem> )

                @Html.DropDownList("SecondID", ViewBag.Policies as IEnumerable<SelectListItem>)

视图中的 Ajax 方法:

$(function () 
    $('#FirstID').change(function () 
        var selectedValue = $(this).val();
        $.ajax(
            url:  '@Url.Action("BuildSecondDropDownLists", "controller")',
            type: "POST",
            data:  id: selectedValue ,
           error: function (xhr, ajaxOptions, thrownError) 
               alert(xhr.status);
               alert(thrownError);
           ,
            success: function (result) 
                alert(result);
                 //here how i can bind second drop down list

            
        );
    );
);

控制器:

  public IEnumerable<SelectListItem> BuildSecondDropDownLists(int id)
    

        Pol = new SelectList(GetData(), "SecondID", "Name");


        ViewBag.Pol = Pol;

        return Pol;
    

【问题讨论】:

【参考方案1】:

首先修复您的控制器操作,使其返回 JSON 而不是一些 IEnumerable&lt;SelectListItem&gt;。请记住,在 ASP.NET MVC 中,控制器操作必须返回 ActionResults:

public ActionResult BuildSecondDropDownLists(int id)

    var result = GetData();
    return Json(result, JsonRequestBehavior.AllowGet);

然后遍历返回的元素并将它们附加到第二个下拉列表中:

success: function (result) 
    var secondDdl = $('#SecondID');
    secondDdl.empty();
    $.each(result, function() 
        secondDdl.append(
            $('<option/>', 
                value: this.SecondID,
                html: this.Name
            )
        );
    );

【讨论】:

嗨达林,感谢以上。我遇到了一个关于您的解决方案的新帖子中发布的 lil 问题; ***.com/questions/36393409/… 任何帮助将不胜感激!

以上是关于在更改第一个 ddl 时使用 jquery ajax 绑定下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

当文章被更改时,DDL 触发器从复制中删除文章

SqlServer Bug:复制架构更改参数(replicate_ddl)无效

jquery miniui 联动下拉选择 选择第一个下拉框触发第二个下拉框数据更改时 setUrl

每当我更改第一个下拉列表中的选项时,需要 jquery 将第二个下拉列表的默认选项更改为“选择”

我想在更改时保存表单,并使用 laravel 和 Jquery 创建一个动态表单

仅在单击指定按钮时如何启动 DropDownList SelectedIndexChanged 事件?