【发布时间】:2014-06-06 00:52:26
【问题描述】:
注意:可能会敦促某些人将此标记为已回答的问题,但事实并非如此,我一直在寻找答案。这是“https://stackoverflow.com/questions/24027245/mvc-any-version-pass-nested-complex-json-object-to-controllers”的修改版,也没有回复。
问题:是否可以通过 jQuery ajax 调用将 JSON 数据发布到 MVC 控制器,其中您传递的数据是复杂类型,其中包含更复杂的类型?以数组数组为例。
var arrayOfarrays = [];
var simpleArray = [];
simpleArray[simpleArray.length] = simpleArray.length + 1;
simpleArray[simpleArray.length] = simpleArray.length + 1;
simpleArray[simpleArray.length] = simpleArray.length + 1;
simpleArray[simpleArray.length] = simpleArray.length + 1;
simpleArray[simpleArray.length] = simpleArray.length + 1;
arrayOfarrays[arrayOfarrays.length] = simpleArray;
arrayOfarrays[arrayOfarrays.length] = simpleArray;
arrayOfarrays[arrayOfarrays.length] = simpleArray;
arrayOfarrays[arrayOfarrays.length] = simpleArray;
arrayOfarrays[arrayOfarrays.length] = simpleArray;
以上是我的数据。如您所见,simpleArray 只是一个数组,arrayOfarrays 是一个数组数组,在某种程度上是嵌套的复杂类型
$.ajax({
url: '/Home/Save',
data: {arrayData:simpleArray, arrayOfarrayData:arrayOfarrays},
type: 'POST',
dataType: 'json',
traditional:true,
cache: false,
success: function (result) {
}
});
上面的 sn-p 是我对控制器 /Home/Save 的 jQuery ajax 调用,下面是控制器本身。请注意,我尝试过使用和不使用 traditional:true 选项。
[HttpPost]
public JsonResult Save(int[] arrayData, int[][] arrayOfarrayData)
{
return Json("received");
}
这是我观察到的:
- 使用
traditional:true,我收到arrayData,它是/Home/Save控制器中的一个简单数组,但arrayOfarrayData为空 - 没有
traditional:true,我收到arrayData作为null,但arrayOfarrayData是作为一个包含5 个元素的数组接收的,但这些元素不是您期望的子数组信息,而是空的
PS: 数组数组只是一个示例,似乎没有 NESTED 复杂类型起作用。或者有什么办法解决这个问题?
【问题讨论】:
标签: jquery ajax asp.net-mvc json