Javascript 将数据从ajax函数传递到mvc4方法

Javascript 将数据从ajax函数传递到mvc4方法,javascript,c#,jquery,ajax,asp.net-mvc-4,Javascript,C#,Jquery,Ajax,Asp.net Mvc 4,我正在用C#和jQuery制作一个简单的MVC4应用程序。在这个应用程序中,当用户按下id为SaveCheckboxChanges的按钮时,我想使用jQuery通过ajax向服务器发送两个数据数组 然后,服务器读取这些数据数组并进行相应的处理 控制器方法: [HttpPost] public ActionResult UpdateCheckBoxes(string requiresSetupArray, string disabledArray){ return Json("chamar

我正在用C#和jQuery制作一个简单的MVC4应用程序。在这个应用程序中,当用户按下id为
SaveCheckboxChanges
的按钮时,我想使用jQuery通过ajax向服务器发送两个数据数组

然后,服务器读取这些数据数组并进行相应的处理

控制器方法:

[HttpPost]
public ActionResult UpdateCheckBoxes(string requiresSetupArray, string disabledArray){
    return Json("chamara", JsonRequestBehavior.AllowGet);
}
Javascript jQuery代码:

$("#SaveCheckboxChanges").click(function (event) {
            if (!$("#SaveCheckboxChanges").hasClass("disabled")) {
                var requiresSetupArray = [0, 1, 2];
                var disabledArray = [4, 5, 6];

                $.ajax({
                    url: '/Material/UpdateCheckBoxes',
                    type: 'POST',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify({requiresSetupArray: requiresSetupArray, disabledArray: disabledArray }),
                    success: function (data) {
                        alert("Success ")
                    },
                    error: function () {
                        alert("error");
                    }
                });
            }
        });
到目前为止的问题是,即使控制器中的方法被正确调用,参数始终为null!
我错过了什么?为什么我的Ajax方法没有传递信息?

控制器中没有两个字符串作为参数,而是可以使用一个包含两个数组的C#对象作为方法中的in参数。对象将自动由已发布数据的值填充。比如:

public class Something
{
    public List<int> RequiresSetupArray {get;set;}
    public List<int> DisabledArray {get;set;}
}
公共类
{
公共列表数组{get;set;}
公共列表禁用Darray{get;set;}
}

您可以尝试更改控制器方法参数,然后将AJAX传统参数设置为true:

[HttpPost]
public ActionResult UpdateCheckBoxes(int[] requiresSetupArray, int[] disabledArray){
    return Json("chamara", JsonRequestBehavior.AllowGet);
}
Javascript

$("#SaveCheckboxChanges").click(function (event) {
     event.preventDefault();
     if (!$("#SaveCheckboxChanges").hasClass("disabled")) {
         var requiresSetupArray = [0, 1, 2];
         var disabledArray = [4, 5, 6];

         $.ajax({
             url: '/Material/UpdateCheckBoxes',
             type: 'POST',
             contentType: 'application/json; charset=utf-8',
             dataType: 'json',
             traditional: true,
             data: JSON.stringify({
                requiresSetupArray: requiresSetupArray, 
                disabledArray: disabledArray 
             }),
             success: function (data) {
                alert("Success " + checkBoxesNumber)
             },
             error: function () {
                alert("error");
             }
        });
    }
});

您的参数是
string
。它们应该是
string[]
(或
int[]
)为什么要字符串化json对象?将其作为JSON对象发送,应该可以做到这一点。我必须将其字符串化,否则会得到一个未定义的类型:s此解决方案不起作用。不幸的是,您忘记了对对象进行字符串化。除此之外,一切都很好。请更新您的答案,以便我可以接受:D