我正在尝试使用 MVC3 来完成以下任务。我有一个包含多个值的表,使用ajax我希望能够选择作为表一部分的删除复选框(对于任意数量的行)。
使用ajax将结果发布到控制器进行处理。我目前遇到的问题是我无法让控制器接受来自 ajax post 的数据。
我正在使用 jQuery 和 json 进行 ajax 调用。
function removeRooms() {
var jdata = { 'mRooms': [] };
$('input:checked').each(function () {
jdata['mRooms'].push($(this).val()); })
$.ajax({
url: "/room/removeselectedroom/@Model.mRoomid",
type: "POST",
dataType: "json",
data: jdata,
success: function (msg) {
$('#mRooms').html(msg);
}
})
}
您可以提供的任何帮助或资源将不胜感激。
编辑:: 一件额外的事情。我正在通过 IEnumerable 对象,但列表中位置之一有一个参数,其值“on”很奇怪,因为我的复选框中只有数字。
尝试使用序列化数据traditional: true
$.ajax({
url: "/room/removeselectedroom/@Model.mRoomid",
type: "POST",
dataType: "json",
data: jdata,
traditional: true,
success: function (msg) {
$('#mRooms').html(msg);
}
})
Here http://api.jquery.com/jQuery.param有关数组序列化的一些信息。
从 jQuery 1.4 开始,$.param() 方法递归地序列化深层对象,以适应现代脚本语言和框架,例如 PHP 和 Ruby on Rails。您可以通过设置 jQuery.ajaxSettings.traditional = true; 全局禁用此功能。
ASP.Net MVC 模型绑定需要以下形式的数组数据
mRooms=1&mRooms=2&mRooms=3
但从 jQuery 1.4 开始它发送
mRooms[]=1&mRooms[]=2&mRooms[]=3
这就是为什么你必须使用traditional: true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)