700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Ajax提交form表单 Ajax文件上传

Ajax提交form表单 Ajax文件上传

时间:2021-09-11 05:45:26

相关推荐

Ajax提交form表单 Ajax文件上传

平时我们会用到各种各样的Ajax请求数据方式,下面我们就来说一下这个Ajax的表单提交,文件上传等等。。。

1.第一种,.post,.get方式

$.post(path,{data:data},function(data){if(success){}else{}},"json");

2.第二种传统的Ajax方式(给一个简单的例子)

$.ajax({type:"post",dataType:"text",data:{"smallYear":val},url:'/index.php/Ch/Cms/About/getFhryStr',//目标地址success:function(e){document.getElementById('fhryStr').innerHTML = e;var a=(".history_intro ul li")for(var i=0; i<a.length; i++){if(i%2==0){/* console.log(2) */$(".history_intro ul li").eq(i).css("background-image","url(/webpage/ch/cms/public/images/about/dian_l.png)");}else if(i%2==1){/* console.log(1) */$(".history_intro ul li").eq(i).css("background-image","url(/webpage/ch/cms/public/images/about/dian_h.png)");}}},})

注意:以上两种方法确实可以做到数据请求提交,但是有一个弊端。当提交的数据量过大时就会出现这种情况:

var username = $("#username").val();var password = $("#password").val();var sex = $("#sex").val();...

数据量很多的时候这就不再是一个好方法了。

下面说几种比较好的方法,相对前两种便捷不少。

1.使用FormData对象

FormData对象是一个html5的javascript对象,主流的浏览器都已经兼容。

FormData可以凭空创建一个对象,然后往这个对象里面添加数据,然后直接提交,不需要写一行html代码,如下:

var form = new FormData();form.append("username","XXX");form.append("password","XXXXX");var req = new XMLHttpRequest();req.open("post", "${pageContext.request.contextPath}/public/upload", false);req.send(form);

也可以使用jQuery发送:

var form = new FormData();form.append("username","XXX");form.append("password","XXXXX");$.ajax({url:"${pageContext.request.contextPath}/public/testupload",type:"post",data:form,processData:false,contentType:false,success:function(data){window.clearInterval(timer);console.log("over..");}});

其次FormData还支持直接从html中的表单生成数据,就是在html页面中已经有数据了,然后FormData可以直接把这个表单的数据写入这个对象,然后直接提交给后台

<form id="tf"><input type="file" name="img"/><input type="text" name="username"/><input type="button" value="提" οnclick="test();"/>.............</form>这里面是上传的有文件的!!!

FormData支持Ajax的文件上传,以前需要写一个表单刷新提交,现在可以直接进行提交。如下:

function test(){var form = new FormData(document.getElementById("tf"));// var req = new XMLHttpRequest();// req.open("post", "${pageContext.request.contextPath}/public/testupload", false);// req.send(form);$.ajax({url:"${pageContext.request.contextPath}/public/testupload",type:"post",data:form,processData:false,contentType:false,success:function(data){window.clearInterval(timer);console.log("over..");},error:function(e){alert("错误!!");window.clearInterval(timer);}}); get();//此处为上传文件的进度条}

使用FormData,在构造这个对象的时候,把表单的对象,作为一个参数放进去,就可以了,然后FormData,就会得到这个表单对象里面的所有的参数,甚至我们在表单中,都不需要声明enctype ="multipart/form-data" ,就可以直接提交。

使用FormData,第一是在提交表单的时候,不需要写大量的js来获得表单数据,直接把表单对象构造就行了。第二就是可以直接异步上传文件

注意:使用FormData提交的时候,大家会注意到表单提交的是request payload,具体有兴趣的同学可以自己百度,它不是之前的Form data提交的,所以后台也是要经过处理的,比如springMVC就需要配置

<!-- 配置nultipartresolver,注意:id名必须这样写,不然会报错 --><bean id="multipartResolver" class="org.springframework.monsMultipartResolver"><property name="defaultEncoding" value="UTF-8"></property><property name="maxInMemorySize" value="10240000"></property></bean>

2.使用jQuery.form.js方法

Jquery.form.js是一个强大的表单插件,其大量的提供了表单操作的各种简便的方法,下面给出一些Jquery.form.js的说明:

Options对象

ajaxForm和ajaxSubmit都支持众多的选项参数,这些选项参数可以使用一个Options对象来提供。

它也支持对一个表单的ajax提交,而且提交方式更为简便,如下:

<form id="tf"><input type="file" name="img"/><input type="text" name="username"/><input type="button" value="提" οnclick="test();"/></form>然后使用一句代码就可以直接进行提交。$("#tf").ajaxSubmit();OK,它也支持文件上传的。

(第二部分表格为百度内容。)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。