首页   >   代码编程   >   WEB前端

ajax提交formdata,报错Uncaught TypeError: Illegal invocation(…)

在使用ajax提交formdata时,报了一个错:“Uncaught TypeError: Illegal invocation(…)”,之前一直都是直接利用jquery,使用$.submit()这种方式,也没太在意一些细节,这次使用FormData()方式来模拟form表单提交,直接凉凉。。。

ajax提交formdata,报错Uncaught TypeError: Illegal invocation(…)

折腾了一圈,最终定位到问题的原因:对提交的form表单数据进行了重复处理

代码如下:

var formData = new FormData();// 声明表单对象,括号中可以传递一个form对象

formData.append("username",  "积微成著");

$.ajax({
	type: 'post',
	url: '/user/update',
	dataType: 'json',
	data: formData,
	processData : false,// 必须要加这一句,否则会对formdata二次处理
	success: function(data) {
		if (data.code == 0) {
			alert('信息修改成功');
		} else {
			alert(data.msg);
		}
	},
	error: function(XMLHttpRequest, textStatus, errorThrown) {
		alert('系统异常');
	}
});

在代码中的注释中我已经标明了解决方法,必须要设置processData为false才能解决这个问题。

简单描述一下问题产生的原因,ajax在提交请求的时候,会对处理的数据进行表单相关的处理,所以在使用formdata的时候,因为它已经是一个表单对象了,就不需要再处理了

QQ群Ⅰ: 686430774 (已满)

QQ群Ⅱ: 718410762 (已满)

QQ群Ⅲ: 638620451 (已满)

QQ群Ⅳ: 474195684

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-07-05

永久地址:https://www.jiweichengzhu.com/article/ff8f4680e9b54e9f9f197d41e6504762

评论