通过 Ajax 提交表单 - FormData 始终为空 [重复]

Posted

技术标签:

【中文标题】通过 Ajax 提交表单 - FormData 始终为空 [重复]【英文标题】:Submitting form via Ajax - FormData always empty [duplicate] 【发布时间】:2016-02-01 08:54:04 【问题描述】:

我需要使用 ajax 在服务器上上传照片。我也设置了 javascript 表单,但 FormData 对象始终为空!我尝试了各种方法来引用实际表单,但仍然无法正常工作。

小提琴示例: https://jsfiddle.net/cjngvg8a/

谢谢!

html:

<form id="profileImageForm" action="update.php" method="post" enctype="multipart/form-data">
<input type="text" value="hello" name="test" />
<input type="file" name="profile_pic" id="image_upload"/>
<input type="submit" value="Save"/>
</form>

js:

$('#profileImageForm').on('submit',(function(e) 
    e.preventDefault();     
    var formData = new FormData(this);

    console.log(formData);

    $.ajax(
        type:'POST',
        url: $(this).attr('action'),
        data:formData,
        cache:false,
        contentType: false,
        processData: false,
        success:function(data)
            console.log("success");
            console.log(data);
        
    );
));

【问题讨论】:

【参考方案1】:

使用console.log() 检查时不会显示 FormData 对象中的数据。它就在那里,只是你看不见。

如果您检查开发人员工具的“网络”选项卡,您可以看到正在上传表单内容。

【讨论】:

您可以使用Array.from(formData) 来查看带有console.log 的值 您知道为什么它在控制台中不可用吗?即使formData.entries 显示长度为 0。

以上是关于通过 Ajax 提交表单 - FormData 始终为空 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ajax+FormData+javascript实现无刷新表单信息提交

通过 AJAX 提交表单数组

FormData对象

FormData的使用以及用ajax提交

(火狐浏览器)前端以FormData类形成表单(含文件),通过ajax提交,PHP后端iconv()报“文件名含有非法字符”且POST中的‘Ttitle’丢失

使用ajax提交form表单