[英]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.