如何在jQuery Ajax中使用formData在laravel中上传文件 [英] How to upload file in laravel with formData in jquery ajax

查看:261
本文介绍了如何在jQuery Ajax中使用formData在laravel中上传文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用laravel 5.4和jquery Ajax上传文件和一些表单数据.

I am using laravel 5.4 and jquery Ajax to upload file and some form data.

我正在使用以下代码

function submitDocument(){
    var formData = new FormData(); // Currently empty
    var _token = $("#_token").val().trim();
    formData.append('title', $("#title").val());
    formData.append("doc",$("#doc")[0].files[0]);
    $.ajax({
      url: "documents",
      method: "post",
      data:{_token,formData},
    }).done(function(data) {

    });
    return false;// Not to submit page
}

我收到错误消息

未捕获的TypeError:非法调用

Uncaught TypeError: Illegal invocation

我该如何解决?预先感谢您的宝贵时间.

How can I fix this ? Thanks in advance for your time.

我能够通过使用

console.log(formData.get('title'));
console.log(formData.get('doc'));

推荐答案

尝试在代码中添加processData: false, contentType: false

为此替换脚本:

function submitDocument(){
var formData = new FormData(); // Currently empty
var _token = $("#_token").val().trim();
formData.append('title', $("#title").val());
formData.append("doc",$("#doc")[0].files[0]);
$.ajax({
  url: "documents",
  method: "post",
  data:{_token,formData},
  cache : false,
  processData: false,
  contentType: false
}).done(function(data) {

});
return false;// Not to submit page
}

默认情况下,作为对象传入data选项的数据将被处理并转换为查询字符串,以适合默认的内容类型"application/x-www-form-urlencoded".如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false.

By default, data passed in to the data option as an object will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.

这篇关于如何在jQuery Ajax中使用formData在laravel中上传文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆