是否可以在变量中传输没有表单的文件,并且在ajax参数中没有contentType:false,processData:false?
$(div).find('input, textarea').each(function(index, element) {
//...
var fileArr = []
if (type === 'file' && element.files.length) {
var file = $(element)[0].files[0];
var fileData = new FormData();
fileData.append('file', file);
fileArr.push(fileData);
}
//...
}
$.ajax({
type: "POST",
url: "/ajax/sendData",
success: function (data) {},
error: function (error) {},
async: true,
data: {
id: 34,
val: 34,
files: fileArr
},
cache: false,
contentType: false, //<-- without
processData: false, //<-- without
timeout: 10000
});
非法调用
答案 0 :(得分:0)
这是正确的语法:
var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
processData: false, // important
contentType: false, // important
dataType : 'json',
data: myFormData
});
无论如何,正如答案所说,您可以通过初始化FormData()来避免使用现有表单,但需要使用ajax传输文件^^
如果您想尝试不同的方法,可以尝试将文件转换为字符串并传递