注意到:它可能是在敦促一些人将这个问题标记为一个已经回答的问题,但事实并非如此,我已经寻找了很长一段时间的答案。这是"https://stackoverflow.com/questions/24027245/mvc-any-version-pass-nested-complex-json-object-to-controllers“的一个修改版本,也没有得到答复。
问题:是否可以通过jQuery ajax调用将JSON数据发布到more,其中您传递的数据是一个复杂类型,其中包含更复杂的类型?示例数组数组。
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) {
}
});上面的片段是我对控制器jQuery /Home/Save的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:数组数组只是一个例子,没有嵌套的复杂类型似乎有效。或者有什么办法可以绕过这件事?
发布于 2014-06-06 00:58:11
我认为你需要把你的数据
var dataToSend={
'arrayData':simpleArray,
'arrayOfarrayData':arrayOfarrays
};
$.ajax({
url: '/Home/Save',
data: JSON.stringify(dataToSend),
type: 'POST',
contentType: 'application/json',
dataType: 'json',
traditional:true,
cache: false,
success: function (result) {
}
});https://stackoverflow.com/questions/24072557
复制相似问题