对于带有 MVC 4 和 jQuery 的 ajax

本文关键字:jQuery ajax 于带 MVC | 更新日期: 2023-09-27 18:30:43

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

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

这是jQuery和Ajax Code。值 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);
            });
        });
    });
}

谢谢。

对于带有 MVC 4 和 jQuery 的 ajax

它正在根据您的代码执行它应该做的事情。您内部有控制器调用 for 循环,因此它被调用 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 个选择元素。

我在选择元素

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

它可能需要一些调整,但它应该让你开始......

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

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

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

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

希望这有助于澄清问题:)