Javascript 将数据从ajax函数传递到mvc4方法
我正在用C#和jQuery制作一个简单的MVC4应用程序。在这个应用程序中,当用户按下id为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
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