Javascript 使用一个函数发送FormData和string
我想使用ajax将表单中的数据(输入中的文件和输入中的字符串)发送到ASP.NET函数。如果我只发送我使用的文件:Javascript 使用一个函数发送FormData和string,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想使用ajax将表单中的数据(输入中的文件和输入中的字符串)发送到ASP.NET函数。如果我只发送我使用的文件: function readURL() { var input = document.getElementById("fileUpload"); var files = input.files; var formData = new FormData(); var test = "some text"; for (var i = 0;
function readURL() {
var input = document.getElementById("fileUpload");
var files = input.files;
var formData = new FormData();
var test = "some text";
for (var i = 0; i != files.length; i++) {
formData.append("files", files[i]);
}
$.ajax({
type: "POST",
url: '/Apartment/UploadFiles',
data: {files: formData },
processData: false,
contentType: false,
});
}
如果我只想发送字符串,我使用:
function readURL() {
var input = document.getElementById("fileUpload");
var files = input.files;
var formData = new FormData();
var test = "some text";
for (var i = 0; i != files.length; i++) {
formData.append("files", files[i]);
}
$.ajax({
type: "POST",
url: '/Apartment/UploadFiles',
data: { test: test},
dataType: "json",
});
}
是否可以使用一个Ajax发送字符串和表单数据?我试着这样做:
$.ajax({
type: "POST",
url: '/Apartment/UploadFiles',
data: {files: formData, test: test },
processData: false,
contentType: false,
});
但现在字符串参数没有发送(为null)
附加-我的控制器代码
public async Task<IActionResult> UploadFiles(string test, IList<IFormFile> files)
{
...
}
公共异步任务上载文件(字符串测试、IList文件)
{
...
}
在发送FormData
对象时,无法组合多种内容类型
将字符串附加到formData
实例,并将名称设置为test
function readURL() {
var input = document.getElementById("fileUpload");
var files = input.files;
var formData = new FormData();
var test = "some text";
for (var i = 0; i != files.length; i++) {
formData.append("files", files[i]);
}
formData.append("test", test);
$.ajax({
type: "POST",
url: '/Apartment/UploadFiles',
data: formData,
dataType: "json",
processData: false,
contentType: false,
});
}
test
是带有字符串值的实际变量还是缺少引号?您可以使用formData.append(name,value)向formData对象添加值代码>在测试代码中,我在函数中创建字符串变量,函数位于AJAXvar test=“some txt”代码>尝试如上所述将字符串附加到formdata对象我尝试使用formdata.append(test,value)
但现在它不起作用(文件未发送)。我认为NAME参数(formData.append(NAME,value)
必须与我在ASP.Functionpublic async Task UploadFiles(IList NAME)中使用的名称相同
。在其他情况下,这不起作用。在这种情况下,向formData对象追加值将不起作用。我不熟悉ASP,也就是说,我猜您必须创建一个新的dto,其中包括字符串和IFormFile,并在UploadFiles函数中使用该dto作为参数。然后您可以访问字符串和文件有了这个dto,你真聪明,我怎么也想不到!谢谢:)