试图通过ajax上传文件,但当我试图通过文件时,我一直收到"非法调用"错误。所有其他输入字段都可以顺利传递(如果我注释掉文件(。
我的代码的精简版:
let file = $('.file-upload')[0];
let form_data = new FormData();
form_data.append('file', file.files[0]);
let data = {
action: 'update_settings',
processData: false,
contentType: false,
'submit': true,
'username': $('input[name="username"]').val(),
'email': $('input[name="email"]').val(),
'file': form_data,
};
$.post(url, data, function(response) {
});
减少HTML:
<form method="POST" enctype="multipart/form-data">
<input class="file-upload" type="file" name="file" accept=".jpg, .jpeg, .png">
<input type="submit" name="submit">
</form>
此外,在不使用ajax的情况下上传文件也很好。
您没有正确调用ajax。应该是
let data = {
// action: 'update_settings',
processData: false,
contentType: false,
// 'submit': true,
// 'username': $('input[name="username"]').val(),
// 'email': $('input[name="email"]').val(),
'data': form_data, // <-----
};
此外,您还应该在formData对象中添加其他参数(用户名、电子邮件、操作、提交(:
formData.append("action", 'update_settings');
// and so on
未测试。。。但也有类似的东西。