jQuery 提交 FormData 对象,前方有坑

这里写图片描述 允许我做一个悲伤的表情

在 Laravel 中提交了半天马歌姬的,老是提交不上去,一直报 jQuery 的错,弄了半天发现是 FormData 的问题。

我拿着 file 文件对象一个一个 appendFormData 里,最后用的 $.post 方法在那儿傻啦吧唧的提交了半天

呸,什么瘠薄玩意儿,才发现 processData 这玩意儿在使用 FormData 作为数据体时是不能开启的

$.post 里默认又是开启的【你就不能自己识别一下 data 的数据类型自己判断下?】

所以只能用 $.ajax 这个方法了:

var data = new FormData();

// 额外的数据直接传就行了
data.append('_token', 'xxxxxxxxxxxxxxx');

$(files).each(function(idx){
    data.append('file[]', files[idx]); // append 走一圈,第三个参数文件名称可空
});

$.ajax({ // $.post,告辞
    type: 'post',
    contentType: false, // 关关关!必须得 false
                        // 这个不关会扔一个默认值 application/x-www-form-urlencoded 过去,后端拿不到数据的!
                        // 而且你甚至不能传个字符串 'multipart/form-data',后端一样拿不到数据!
    processData: false, // 关关关!重点
    url: '/upload',
    data: data,
    success: function (response) {
        // TODO
    }
});
阅读更多
版权声明:Max Sky 原创文章,转载时请保留所有权并以超链接形式标明文章出处。否则将追究相关法律责任。 https://blog.csdn.net/maxsky/article/details/80629766
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭