当我在我的拖放区上传文件时,它不起作用。通常它非常好用,但是自从1个月以前,我就一直遇到这个JS错误:
Uncaught TypeError: Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.
这是代码,当我使用FormData时:
var form_data = new FormData("#my-awesome-dropzone");
Dopzone代码
Dropzone.options.myAwesomeDropzone = {
maxFilesize: 5,
maxFiles: 1,
addRemoveLinks: true,
dictResponseError: 'Server not Configured',
acceptedFiles: ".pdf",
init:function(){
var self = this;
// config
self.options.addRemoveLinks = true;
self.options.dictRemoveFile = "Delete";
//New file added
self.on("addedfile", function (file) {
console.log('new file added ', file);
if(!confirm("Do you want to upload the file?")){
this.removeFile(file);
return false;
}
});
// Send file starts
self.on("sending", function (file, xhr, formData) {
console.log('upload started', file);
$('.meter').show();
var form_data = new FormData("#my-awesome-dropzone");
$.ajax({
url: '/settings/uploadFile',
data: 'file=' + file.name ,
type: 'POST',
processData: false,
contentType: false,
success: function(response) {
}
});
});
// File upload Progress
self.on("totaluploadprogress", function (progress) {
console.log("progress ", progress);
$('.roller').width(progress + '%');
});
self.on("queuecomplete", function (progress) {
$('.meter').delay(999).slideUp(999);
});
// On removing file
self.on("removedfile", function (file) {
console.log(file);
});
}
HTML 代码
<form enctype="multipart/form-data" action="/settings/uploadFile" method="post" class="dropzone"
id="my-awesome-dropzone">
</form>
编辑于2019年01月08日:好的,我已经测试过,在 Microsoft Edge 44.17763.1.0 上可以运行,但在 Google Chrome 或 Firefox 上无法运行,有什么解释吗?
[<>]
工具栏按钮;这里是如何创建一个)。尽管 Stack Snippets 不允许 提交 表单,但你可以从我的答案中的实时示例中看到,你仍然可以创建FormData
,因此应该能够重现问题。 - T.J. Crowder