ajax文件上传(非按钮提交)

本文主要介绍了Ajax文件上传时遇到的问题及解决方案,重点讲解了如何通过FormData对象正确传递文件数据,解决Ajax请求中参数错误的问题。文章还提供了静态页面代码示例,帮助读者理解和实现Ajax文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

作为小白新手总是会遇到各种问题,由于对Ajax不熟悉,造成了文件上传遇到提交没反应,请求页面报错。
经过查资料一番折腾总算知道怎么解决了。
为了加深印象把自己遇到的问题记录下来。
我的问题主要是不知道Ajax是怎么传递文件数据的。
请求报错老是提示参数不正确。Uncaught TypeError: Illegal invocation
下面是总结代码:

静态页面代码

 <form id="staffpthoto" enctype="multipart/form-data">  	
	     <input id="file1" type="file" name="file"/>
	     <span>上传头像</span>	
  </form>

ajax如何获取文件

$("#file1").on("change",function(){		 
			  alert("test2");
			  $.ajax({
				  	url:"upload",//提交到的地址(我这里是提交到控制器)
	  			  	dataType:"json",//数据格式
	  				type:"post",//提交方式
	  				data: new FormData($("#staffpthoto")[0]),//获取要上传的文件(重点)
	  				cache: false,
	  				contentType: false,
	  	            processData: false,
	  				success:function(imgName){
	  					alert(imgName);
	  						//这里根据自身情况对返回的数据进行操作
	  						//$("#img").attr("src","http://localhost/static/images/"+imgName);
	  				}
			  })
	  }); 
  }) 

这里重点在于new FormData($("#staffpthoto")[0]);通过这种方式,会把表单里的内容通过key-value形式来封装,所以这里把要上传的文件放在from里面,直接new FormData():把表单通过选择器直接构建进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值