对于带有 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);
});
});
});
}
谢谢。
它正在根据您的代码执行它应该做的事情。您内部有控制器调用 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);
希望这有助于澄清问题:)