怎么在ajax中利用formdata流上传文件

今天就跟大家聊聊有关怎么在ajax中利用formdata流上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

//html如下
//form1
<formclass="col-xs-12register-form"id="registerForm"method="post"action="">
<divclass="form-groupcol-xs-waptc">
<divclass="col-xs-2">
<iclass="iconi-store"></i>
</div>
<divclass="col-xs-10">
<inputtype="text"class="form-control"placeholder="店铺名称"id="shopName"name="shopName">
</div>
</div>
<divclass="form-groupcol-xs-waptc">
<divclass="col-xs-2">
<iclass="iconi-user"></i>
</div>
<divclass="col-xs-10">
<inputtype="text"class="form-control"placeholder="本人姓名"id="name"name="name">
</div>
</div>
</form>
//form2
<formaction=""method="post"class="mt10"id="registerForm2">
<inputid="frontPhoto"name="frontPhoto"/>
<inputid="backPhoto"name="backPhoto"/>
<inputid="handlePhoto"name="handlePhoto"/>
</form>
$("#btn-register-confirm").click(function(){
//upRegister()是表单验证,这就没有给出了
if(upRegister()){
varform=$("#registerForm2")[0];//第二个表单的id,注意[0]不能漏掉
varfd=newFormData(form);
//由于后台接收的数据只能是序列化之后的样子,所以将第一个表单的字段存放在cookie中。通过fd.append()以键值对形式存放
fd.append("shopName",$.cookie("shopName"));
fd.append("name",$.cookie("name"));


$.ajax({
type:'post',
async:false,
url:"url",
data:fd,
processData:false,//因为data值是FormData对象,不需要对数据做处理。
contentType:false,//因为是由<form>表单构造的FormData对象,所以这里设置为false。
success:function(data){
if(data.resultCode=="0"){
webToast("成功注册!");
console.log("成功注册");

}
},
error:function(){
console.log("注册失败");
}
})
}
});

以上就实现了ajax上传文件流及一般参数。这主要涉及到2方面:

怎么在ajax中利用formdata流上传文件

  1. 不同页面的不同表单要放在同一个按钮触发同一个ajax传输到服务器,使用cookie先存储一个表单数据,这可能会麻烦些并且不安全,但目前我也只想到了这种方式,如果有更好的欢迎补充;

  2. ajax上传文件流,要注意var fd=new FormData($("#表单id")[0]);[0]千万要带上,我就是因为这个弄了一整天才好。processData:false, contentType:false,还有ajax的这两个参数要写为false,具体原因上面已经写了。

看完上述内容,你们对怎么在ajax中利用formdata流上传文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。

发布于 2021-03-24 01:22:38
收藏
分享
海报
0 条评论
162
上一篇:如何在.Net Core中使用ObjectPool 下一篇:怎么在Laravel中利用GuzzleHttp调用第三方服务API接口
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码