MVC3 JQuery AJAX ||多个传递的参数为空

时间:2011-09-01 13:36:58

标签: asp.net-mvc-3 jquery

我在使用AJAX向控制器发布多个参数时遇到了一些问题。两个参数都以null结尾,无法找出原因。我正在尝试从名为“cat_fam_codes”和“cat_codes”的两个下拉列表中发送选定的值

更新:我添加了下面列出的内容类型和数据类型。同样的问题:传递给控制器​​的两个参数都是空的。

在视图中:

    $('#cat_fam_codes').click(function () {
        var categoryData = {
            categoryFamilyCodes: $('#cat_fam_codes').val(),
            categoryCodes: $('#cat_codes').val()
        };

        $.ajax({
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: '/EventReport/GetCCRCodes/',
            data: JSON.stringify(categoryData),
            success: function (jsonresults) {
                if (jsonresults != null) {
                    $('#ccr_codes').find('option').remove().end();
                    for (var i = 0; i < jsonresults.length; i++) {
                        $('#ccr_codes').append('<option value="' + jsonresults[i].CCRCodeId + '">' + jsonresults[i].Description + '</option>');
                    }
                }
            },
            error: function (xhr, status, error) {
                alert('Failed to retrieve CCR Codes for this list.  A "' + error + '" response was returned.');
            }
        });

    });

在控制器中:

[HttpPost]
public ActionResult GetCCRCodes(string categoryFamilyCodes, string categoryCodes)
{ ... }

传递给控制器​​的两个参数都为null。非常感谢任何协助。

谢谢!

2 个答案:

答案 0 :(得分:2)

我会采取更简单的方法。假设你在html表单中有那些DropDownLists

$.post("/EventReport/GetCCRCodes/", $("form").serialize());

答案 1 :(得分:2)

使用Fiddler或类似工具检查通过$ .ajax()调用返回控制器的内容。 $ .ajax可能不会以JsonValueProviderFactory可以反序列化的形式发送数据。当我通过$ .ajax发布JSON时,我总是明确指定以下选项:

 contentType: "application/json; charset=utf-8",
 dataType: "json",