您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
一位不愿透露姓名的用户 发布于2019年05月21日 16:01 最近更新于 2019年05月21日 16:02

TypeError: 'append' called on an object that does not implement interface FormData.

3166 次浏览 读完需要≈ 2 分钟 jQueryJavaScript

使用 jQuery 进行文件上传功能时,jQuery 报错:TypeError: 'append' called on an object that does not implement interface FormData.

代码片段如下:

$('#fileUpload').on('change', function(){
	if(!this.value) return;
	var formData = new FormData();
	formData.append(this.name, this.files[0]);
	$.ajax({
		type: 'POST',
		url: '/file/upload',
		dataType: 'json',
		data: formData,
		success: function(json){
			console.log(json);
		},
		error: function (jqXHR, textStatus, errorMsg) {
			// ignore
		}
	});
});

请问各位这个大神报错如何解决呢?

环境信息

  • jQuery 版本: 1.11.1
  • 浏览器 版本:Chrome 69

1 个回答

Ready · 5年前

你在 $.ajax() 方法传入的配置对象中加一个属性:processData: false,应该就可以了 。

关于这个参数的具体含义,你可以参考 $.ajax() 这篇文章。

processData这个属性,默认为true。它表示jQuery将尝试处理你传入的data参数,并将其转化为符合HTTP标准的请求参数字符串。

由于你使用了浏览器原生支持的 FormData,因此是不需要jQuery再帮你将请求数据参数处理为字符串的。所以,就需要将该参数手动设置为false

已采纳 ? 1 0 0 编辑

撰写答案