Ajax方式上传文件报错"Uncaught TypeError: Illegal invocation"

今天使用ajax上传文件时,出现了错误。数据传输的方式是通过定义formData完成的,提交的文件对象也设置为dom对象,但是还是不能发送请求。F12看到后台报了个错误:Uncaught TypeError: Illegal invocation,百度了一下,找到了解决方法。

解决方法:在ajax请求的参数中添加如下两个参数:

$.ajax({
    ...,
    processData: false,
    contentType: false,
    ...
});    

processData

类型:Boolean

默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。

contentType

类型:String

默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。

默认值适合大多数情况。如果你明确地传递了一个 content-type 给 $.ajax() 那么它必定会发送给服务器(即使没有数据要发送)。

关于ajax的其他配置,可以参考W3School上的资料。

原文地址:https://www.cnblogs.com/yjry-th/p/10997055.html

时间: 2024-10-10 13:09:25

Ajax方式上传文件报错"Uncaught TypeError: Illegal invocation"的相关文章

jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation"

jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation" query-3.1.1.min.js:4 Uncaught TypeError: Illegal invocation 错误原因: jQuery Ajax 上传文件处理方式, 使用ajax向后台发送数据时其中的图片数据的参数类型为file,属于对象,而不是一个字符串值.导致错误的出现 var formData = new FormData(); formData.append(

JQuery报错"Uncaught TypeError: Illegal invocation"

Jquery实现Ajax异步提交时报错"Uncaught TypeError: Illegal invocation",如下图: 排查发现错误在于此: data:{"search_value":$('input[name=search_value]'),"order_source":buyerType,"order_status":orderType} $('input[name=search_value]') 是一个对象而不

ajax--表单带file数据提交报错Uncaught TypeError: Illegal invocation

只要设置 contentType: false, //不设置内容类型 processData: false, //不处理数据 1 $("#btn").on("click",function(e){ 2 e.preventDefault(); 3 // 得到提交的参数 4 var name = $("#name").val(); 5 var gender = $("input[type='radio']:checked").va

Flex和Servlet结合上传文件报错(一)

1.具体错误如下 一个表单域 不是一个表单域 java.io.FileNotFoundException: D:\MyEclipse\workspace\FlexFileUpload\Web\null\鏂板缓 Microsoft Word 鏂囨..docx (系统找不到指定的路径.) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:1

Flex和Servlet结合上传文件报错(二)

1.具体报错如下 一个表单域 不是一个表单域 java.io.FileNotFoundException: D:\MyEclipse\workspace\FlexFileUpload\Web\uploadFolder\鏌卞舰鍥?xls (文件名.目录名或卷标语法不正确.) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:179) at

Ajax方式上传文件

用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹.... 有了这两个对象,我们可以真正的实现Ajax方式上传文件. 示例代码: <!DOCTYPE html> <html> <head> <title>Html5 Ajax 上传文件</title>

通过Ajax方式上传文件,使用FormData进行Ajax请求

通过传统的form表单提交的方式上传文件: 1 2 3 4 5 6 7 8 9 <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data">       <h1 >测试通过Rest接口上传文件 </h1&g

H5 通过Ajax方式上传文件,使用FormData进行Ajax请求

通过传统的form表单提交的方式上传文件: Html代码   <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> <h1 >测试通过Rest接口上传文件 </h1> <p >指定

关于IE9中webdiriver使用autoit上传文件报错

在ie9中, type="file"的元素是通过js打开的 webdirver结合autoit上传文件时,会报拒绝访问的错 sciTE编辑器中是这样写的: #include <Constants.au3> Sleep(5000) ControlFocus("选择要加载的文件", "","Edit1") ControlSetText("选择要加载的文件", "", "