如何通过ajax提交包含数据和文件的表单

时间:2016-10-28 15:36:20

标签: javascript php jquery ajax forms

您好我正在尝试通过ajax提交表单。当我没有表单中的文件时,它工作正常。现在我添加了文件,我不知道如何添加该信息。 添加文件之前的代码是这样的:

 var postData = form.serializeArray();
 $.ajax({
            url : 'my/url',
            type: "POST",
            data : postData,
            success:function(data, textStatus, jqXHR)
            {
                console.log('success');

            },
            error: function(jqXHR, textStatus, errorThrown)
            {
                console.log('Fail');
            }
        });

我一直在寻找教程,他们说要使用formData对象来获取文件。像这样:

  if (files.length) {
         fileData = new FormData();
        $.each(files, function(key, value)
        {
            fileData.append(key, value);
        });
    }

那么如何将其附加到postData变量并将它们一起提交?

编辑: 我试过这样做:

fileData = new FormData($('#form').serializeArray());
fileData = new FormData($('#form'));

我收到错误:

illegal invocation

1 个答案:

答案 0 :(得分:0)

将表单传递给FormData的构造函数比将迭代文件添加到数据更容易。

$( '#formId' )
  .submit( function( e ) {
    $.ajax( {
      url : 'my/url',
      type: 'POST',
      data: new FormData( this ),
      processData: false,
      contentType: false,
      success:function(data, textStatus, jqXHR)
      {
          console.log('success');

      },
      error: function(jqXHR, textStatus, errorThrown)
      {
                console.log('Fail');
      }
    });

    e.preventDefault();
});