我可以通过 Ajax 将两个数组传递给控制器吗? (文件数组和整数数组)
Posted
技术标签:
【中文标题】我可以通过 Ajax 将两个数组传递给控制器吗? (文件数组和整数数组)【英文标题】:Can I pass two arrays through Ajax to controller. (File Array and Int Array) 【发布时间】:2021-05-17 02:42:17 【问题描述】:我正在使用以下代码来收集数据和 Ajax 调用:
var childArr = [];
var File_Arr = [];
File_Arr = $('#File_Arr');
console.log($.type(File_Arr));
$('#File_Arr').each(function ()
File_Arr.push($(this).val());
);
//File_Arr = $("#File_Arr").val();
var children = $('#file-container table').children('tbody');
var test1 = [1, 2, 3, 4];
var test2 = [5, 6, 7, 8];
$(children).each(function (index, item)
var count = $(item).children().length - 1;
childArr.push(count);
);
$.ajax(
url: "@Url.Content("~/Search_Replace_/UploadFile")",
type: "POST",
data: 'tableRowCount':childArr,'File_Arr':File_Arr,
dataType: "json",
contentType: "application/json",
charset: "utf-8",
success: function (msg)
console.log('Success!');
);
我在控制器中使用以下代码来捕获两个数组:
[HttpPost]
public ActionResult UploadFile(int[] tableRowCount, HttpPostedFileBase[] File_Arr)
但在这里我只能正确获取File_Arr
,而tableRowCount
将作为null
来。
请注意:我也尝试过JSON.stringify()
方法,但显示超出最大调用堆栈大小的错误。
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:您可以使用表单数据来发送带有数据的文件。试试这个:
var childArr = [];
var fileUploadControl = $('#File_Arr').get(0);
var files = fileUploadControl.files;
var formData = new FormData();
for (var i = 0; i < files.length; i++)
formData.append('File_Arr', files[i]);
var children = $('#file-container table').children('tbody');
var test1 = [1, 2, 3, 4];
var test2 = [5, 6, 7, 8];
$(children).each(function (index, item)
var count = $(item).children().length - 1;
childArr.push(count);
);
for (var i = 0; i < childArr.length; i++)
formData.append('tableRowCount', childArr[i]);
$.ajax(
url: "@Url.Content("~/Search_Replace_/UploadFile")",
type : "POST",
data: formData,
processData: false,
contentType: false,
success: function (msg)
console.log('Success!');
);
【讨论】:
嗨,你能告诉我如何在控制器中访问这些数据吗? 使用您在控制器中编写的相同代码。没有变化! 我试图访问它,但 tableRowCount 在控制器中仍然为空。我是否必须使用 Request['tableRowCount'] 才能在控制器中访问它? 检查你的childArr是否有数据。是的,您可以从 Request 对象中访问它,但是我们不需要在操作方法中指定参数。 我在 jquery 中使用调试器检查过,childArr 中有数据,但在控制器中仍然为空。以上是关于我可以通过 Ajax 将两个数组传递给控制器吗? (文件数组和整数数组)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ajax 传递 from.serialize() 和数组值?