0

每个人都有美好的一天

我有一个包含 jquery 的 asp.net mvc4 项目。在我的编辑表单中,我将尝试在我的 JsonResult 中发送选中的复选框数组,.getJSON我需要获取我的元素数组。但是我收到的不是数组null,而是我的代码:

jQuery

我将尝试为我的数组的 sendind 发送 2 个不同的函数

$(function () {
    var values = [];
    $(".checkboxUniversities:checked").each(function () {
        values.push($(this).val());
    });
    $(".checkboxUniversities").change(function () {
        $.getJSON('/Administrator/ProgramList/' + values, function (data) {
            var items = '<option>Select a Program</option>';
            $.each(data, function (i, program) {
                items += "<option value='" + program.Value + "'>" + program.Text + "</option>";
            });
            $('#EducationProgramBachelorId').html(items);
        });
    });
});

$(function () {
    var values = [];
    $("input[name='selectedLatUniversities']:checked").each(function () {
        values.push($(this).val());
    });
    $(".checkboxUniversities").change(function () {
        $.getJSON('/Administrator/ProgramList/' + values, function (data) {
            var items = '<option>Select a Program</option>';
            $.each(data, function (i, program) {
                items += "<option value='" + program.Value + "'>" + program.Text + "</option>";
            });
            $('#EducationProgramBachelorId').html(items);
        });
    });
});

控制器中的 C# 代码

这是我试图改变我的values变量的声明,但它null仍然是。

public JsonResult ProgramList(string values)
    {
        //some code
    }

public JsonResult ProgramList(string[] values)
    {
        //some code
    }

我打开了网络选项卡,看到发送链接如下所示:

/Administrator/ProgramList/Uni1,Uni2,Uni3等等我所有选中的复选框。

我不知道我的错误在哪里。有人有想法么?

PS:我的 JQuery 代码放在<script>Razor 视图的标签内

4

3 回答 3

0

在 getJSON 中将值作为对象发送

尝试这个

 var values = {};
 .....//your codes
 $.getJSON('/Administrator/ProgramList/',{"values":values}, function (data) {
 ..
于 2013-09-12T17:44:46.387 回答
0

我很困惑。

接下来是我的解决方案:我要改变

ProgramList(string values)ProgramList(string Id)

并在 jquery 代码中使用下一个请求

$.getJSON('/Administrator/ProgramList/' + values , function (data) {}

我希望任何人帮助这个信息。

但我仍然不明白为什么它会起作用?%)

PS:一位非常聪明的人提示我路由有问题,他是对的。只需更改路线Global.asax,一切都会完美无缺

于 2013-09-12T19:40:19.267 回答
0

尝试这个

    $(function () {

    $(".checkboxUniversities").change(function () {
         var values = [];   // declare the array here
        $(".checkboxUniversities:checked").each(function () {
            values.push($(this).val());
        });
        $.getJSON('/Administrator/ProgramList/', {
            "value": values
        }, function (data) {
             alert('success'); // for checking
           var items = '<option>Select a Program</option>';
            $.each(data, function (i, program) {
                items += "<option value='" + program.Value + "'>" + program.Text + "</option>";
            });
            $('#EducationProgramBachelorId').html(items);
        });
    });

});

希望这有帮助,谢谢

于 2013-09-12T18:12:40.893 回答