【问题标题】:Send file in Ajax and input with jQuery在 Ajax 中发送文件并使用 jQuery 输入
【发布时间】:2020-12-08 05:16:35
【问题描述】:

我有一个用于上传文件和输入的表单。

<form id="form">
    <input type="text" id="name">
    <input type="file" id="file">
</form>

这是我用来在 Ajax 中发送文件的内容:

$('#form').submit(function(e){
    e.preventDefault();
    var file_data = $('#file').prop('files')[0];   
    var form_data = new FormData();                  
    form_data.append('file', file_data);

    $.ajax({
        type : 'POST',
        data: form_data,                         
        url: 'upload.php',
        dataType: 'text',
        cache: false,
        contentType: false,
        processData: false,
        ...

但我没有得到输入值。

请问我在这里缺少什么?

谢谢。

【问题讨论】:

  • 您需要另一个 append() 用于文本输入键和值

标签: jquery ajax upload


【解决方案1】:

当您需要该表单中的所有数据时,将整个表单元素传递到 FormData() 比手动追加它更简单

代替:

var file_data = $('#file').prop('files')[0];   
var form_data = new FormData();                  
form_data.append('file', file_data);

只要做:

var form_data = new FormData(this);// `this` is the form element submit event occured on

并在表单控件中添加name 属性:

<form id="form">
    <input name="name" type="text" id="name">
    <input name="file" type="file" id="file">
</form>

【讨论】:

  • 谢谢,我可以像这样$_FILES['file']['name'] 或像这样$_POST['file']['name'] 那样用PHP 获取文件?
  • 没有...$_FILES['file']$_POST['name']
猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2015-03-12
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多