Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在MVC中使用jquery使用基于另一个dropdownlist的数组填充dropdownlist_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 3_Drop Down Menu - Fatal编程技术网

Javascript 如何在MVC中使用jquery使用基于另一个dropdownlist的数组填充dropdownlist

Javascript 如何在MVC中使用jquery使用基于另一个dropdownlist的数组填充dropdownlist,javascript,jquery,asp.net-mvc,asp.net-mvc-3,drop-down-menu,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 3,Drop Down Menu,我有两个dropdownlistfor,第二个应该根据第一个dropdownlist 我试着跟随Darins,但我无法让第二个dropdownlistfor工作并填充我的数组。我的第二个下拉列表没有填充,而是消失了 这是我使用JSON的脚本 <script type="text/javascript"> $(function () { $('#teamname').change(function () { var selecte

我有两个
dropdownlistfor
,第二个应该根据第一个
dropdownlist

我试着跟随Darins,但我无法让第二个
dropdownlistfor
工作并填充我的数组。我的第二个
下拉列表没有填充,而是消失了

这是我使用JSON的脚本

    <script type="text/javascript">
    $(function () {
        $('#teamname').change(function () {
            var selectednametext = $(this).find("option:selected").text();
            $.getJSON('@Url.Action("TeamName")', { TeamName: selectednametext }, function (persons) {
                var selectedpersons = $('#personname');
                selectedpersons.empty();
                $.each(persons, function (index, person) {
                    selectedpersons.append(
                    $('<option/>')
                        .attr('value', person.name)
                        .text(person.name)
                );
            });
        });
    });
});
</script>
这是我的阵列在控制器中填充的方式:

public ActionResult TeamName(string teamname)
    {
        if (teamname == "Team A")
        {
            System.Collections.ArrayList teamArray = new System.Collections.ArrayList();

            new ConsultantContext(new Uri("http://foo/persons"), ConsultantContext.Format.Json)
            .Consultant
            .Where(x => x.Team == "Team A")
            .OrderBy(x => x.DisplayName)
            .ToList()
            .ForEach(item =>
            {
            teamArray.Add(item.DisplayName);
            });

            return Json(teamArray, JsonRequestBehavior.AllowGet);   
        }// and same goes with arrays for Team B and Team C
感谢您的帮助,提前谢谢

$(“#团队名称”)
与下拉列表的id不匹配。确保在标记中指定了相同的id:

@Html.DropDownListFor(
    model => model.TeamName, 
    Model.Teams, 
    "Select Team", 
    new { id = "teamname", @class = "selectstyle" }
)
这同样适用于
$(“#personname”)选择器。您应该修复标记,使这些选择器与DOM元素相对应

还有,为什么要使用
ArrayList
?那是史前的。使用强类型集合:

public ActionResult TeamName(string teamname)
{
    var consultants = new ConsultantContext(
        new Uri("http://foo/persons"), 
        ConsultantContext.Format.Json
    )
    .Consultant
    .Where(x => x.Team == teamname)
    .OrderBy(x => x.DisplayName)
    .ToList()
    .Select(x => new 
    {
        name = x.DisplayName
    });

    return Json(consultants, JsonRequestBehavior.AllowGet);   
}

我现在已经确定了身份证的匹配。但是我的脚本仍然没有用数组填充第二个
dropdownlist
。它是空的,你看过《萤火虫》吗?您看到AJAX请求了吗?服务器响应什么?确保jQuery选择器返回值。您可以使用FireBug在javascript中设置断点并一步一步地进行调试。谢谢您的帮助。一旦我改为强类型集合,它就工作了
public ActionResult TeamName(string teamname)
{
    var consultants = new ConsultantContext(
        new Uri("http://foo/persons"), 
        ConsultantContext.Format.Json
    )
    .Consultant
    .Where(x => x.Team == teamname)
    .OrderBy(x => x.DisplayName)
    .ToList()
    .Select(x => new 
    {
        name = x.DisplayName
    });

    return Json(consultants, JsonRequestBehavior.AllowGet);   
}