繁体   English   中英

如何在jQuery Ajax中使用formData在laravel中上传文件

[英]How to upload file in laravel with formData in jquery ajax

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

我正在使用下面的代码

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:非法调用

在此处输入图片说明

我怎样才能解决这个问题 ? 在此先感谢您的时间。

我能够通过使用在formData中获得价值

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。

<script>
$(document).ready(function() {
    var url = "{{ url('/admin/file') }}"; 
    var options = { 
            type: 'post',
            url: url,       
            headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}'},
            dataType: 'doc',
            cache: false,
            contentType: false,
            processData: false,
            success: function (data) {
                alert('Ok');
            },
            error: function (data) {
                alert('Error');
            }
    }; 
    $('#save').on('click', function() { 
        $("#form").ajaxSubmit(options); 
        return false; 
    }); 
}); 
</script>

试试这个

$(document).ready(function (){
$("#form").on('submit',(function(e){
        e.preventDefault();
        var formdata = new FormData(this);
        var _token = $("#_token").val().trim();
        formData.append('title', $("#title").val());
        formData.append("doc",$("#doc")[0].files[0]);
        $.ajax({
            url: "/site/url",
            type: "POST",
            data:{token:_token,formData},
            contentType: false,
            cache: false,
            processData:false,
            success: function(data){

            },
        });
    }));});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM