gpt4 book ai didi

php - 尝试使用 AJAX 上传文件时 FormData 对象始终为空

转载 作者:行者123 更新时间:2023-12-01 03:10:52 25 4
gpt4 key购买 nike

当尝试使用 AJAX 上传图像而不直接提交表单并将 FormData 对象发送到服务器时,它返回空 $_FILES大批。但是如果我使用 <input type="submit"> 提交表单标签$_FILES array不为空,接收数据。

HTML

<form action="core/update.php" method="post" enctype="multipart/form-data" id="profile-photo" name="profile-photo-form">
<input type="file" id="photo-filename" name="avatar" class="edit-show panel photo-upload">
</form>
<button class="save-button" disabled="disabled">Save</button>

JS

$('#profile-photo').on('submit', function(e) {
e.preventDefault();

var form = $('#profile-photo')[0];
var formData = new FormData(form);

formData.append('avatar', $('#photo-filename')[0].files[0]);

$.ajax({
url: "core/update.php",
data: formData,
type: "POST",
contentType: false,
cache: false,
processData: false
});

console.log(formData);
});

$('.save-button').on('click', function() {
if ($('#photo-filename').val != '') {
$('#profile-photo').submit();
};
}

UPD

还有$('#profile-photo').serialize()返回空白字符串。

UPD 2

它会与页面上的其他 AJAX 请求冲突吗?

最佳答案

试试这个:

因为用户可能上传多个文件

jQuery.each(jQuery('#photo-filename')[0].files, function(i, file) {
data.append('file-'+i, file);
});

而不是

formData.append('avatar', $('#photo-filename')[0].files[0]);

完整的解决方案:

$('#profile-photo').on('submit', function(e) {
e.preventDefault();

var form = $('#profile-photo')[0];
var formData = new FormData(form);

jQuery.each(jQuery('#photo-filename')[0].files, function(i, file) {
formData.append('file-'+i, file);
});

$.ajax({
url: "core/update.php",
data: formData,
type: "POST",
contentType: false,
cache: false,
processData: false
});

console.log(formData);
});

关于php - 尝试使用 AJAX 上传文件时 FormData 对象始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com