繁体   English   中英

对于使用MVC 4和jQuery的Ajax

[英]For in ajax with MVC 4 and jQuery

我在asp.net MVC 4中构建了一个Web应用程序,但是我有一个问题,我正在尝试执行for循环以完成选择。 奇怪的是,当循环运行时,警报会显示最大参数的数量。 但是循环调用我控制器中方法的5倍。

我希望我能说清楚自己(我是智利人,所以我不会说或写好英语)。

这是jQuery和Ajax代码。 od rowIndex的值为5。

    for (var i = 0; i < rowIndex; i++) {
    $(function (i) {

        $.getJSON("/Admin/Administradoras/List", function (data) {
            var items = "<option>Elija Una Opcion</option>";
            alert(i);
            $.each(data, function (i, administradoras) {

                items += "<option value='" + administradoras.Value + "'>" + administradoras.Text + "</option>";
            });

            $("#Administradoras" + i).html(items);
        });


        $("#Administradoras" + i).change(function () {
            $.getJSON("/Admin/Fondos/List/" + $("#Administradoras" + i + " option:selected").attr("value"), function (data) {
                var items = "<option>Elija Una Opcion</option>";
                $.each(data, function (i, fondos) {
                    items += "<option value='" + fondos.Value + "'>" + fondos.Text + "</option>";
                });
                $("#Fondos" + i).html(items);
            });
        });
    });
}

谢谢。

它正在根据您的代码执行应做的事情。 循环中有控制器调用,因此它被调用了5次。 我想你想要这样的东西:

HTML

<select class="Administradoras" id="Administradoras1"></select>
<select class="Administradoras" id="Administradoras2"></select>
<select class="Administradoras" id="Administradoras3"></select>
<select class="Administradoras" id="Administradoras4"></select>
<select class="Administradoras" id="Administradoras5"></select>

JS

$(function (i) {

    $.getJSON("/Admin/Administradoras/List", function (data) {
        var items = "<option>Elija Una Opcion</option>";
        alert(i);
        $.each(data, function (i, administradoras) {
            items += "<option value='" + administradoras.Value + "'>" + administradoras.Text + "</option>";
        });        
        for (var i = 0; i < rowIndex; i++) {
            $("#Administradoras" + i).html(items);
        }
    });


    $(".Administradoras").change(function () {
        $.getJSON("/Admin/Fondos/List/" + $(this).find(":selected").attr("value"), function (data) {
            var items = "<option>Elija Una Opcion</option>";
            $.each(data, function (i, fondos) {
                items += "<option value='" + fondos.Value + "'>" + fondos.Text + "</option>";
            });

            var num = $(this).attr("id").match(/\d+\);
            $("#Fondos" + num).html(items);
        });
    });
});

for循环已在ajax调用移动,因此现在只调用一次控制器,创建选项并将它们绑定到5个select元素。

我向选择元素添加了一个类,以便您可以将其用作更改事件选择器,并且更改选择器以获取当前选择元素的所选选项的值。 最后,我从select元素的id中获取数字,并使用该数字获取正确的“ #Fondos”元素。

它可能需要一些调整,但是它应该可以帮助您入门...

编辑以回答此行的作用问题:

var num = $(this).attr("id").match(/\d+\);

由于更改选择器适用于所有管理员选择,因此我们需要找到匹配的Fondos元素。 应该从“管理员选择”列表的ID中获取数字,然后可以使用它在下一行获取正确的Fondos元素:

$("#Fondos" + num).html(items);

希望可以帮助解决问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM