Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用一个函数发送FormData和string_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 使用一个函数发送FormData和string

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;

我想使用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; 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对象添加值在测试代码中,我在函数中创建字符串变量,函数位于AJAX
var test=“some txt”尝试如上所述将字符串附加到formdata对象我尝试使用
formdata.append(test,value)
但现在它不起作用(文件未发送)。我认为NAME参数(
formData.append(NAME,value)
必须与我在ASP.Function
public async Task UploadFiles(IList NAME)中使用的名称相同
。在其他情况下,这不起作用。在这种情况下,向formData对象追加值将不起作用。我不熟悉ASP,也就是说,我猜您必须创建一个新的dto,其中包括字符串和IFormFile,并在UploadFiles函数中使用该dto作为参数。然后您可以访问字符串和文件有了这个dto,你真聪明,我怎么也想不到!谢谢:)