Ajax提交form表单,Ajax文件上传
来源:互联网 发布:博思数据研究中心 编辑:程序博客网 时间:2024/05/17 08:40
平时我们会用到各种各样的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.."); }});
<form id="tf"> <input type="file" name="img"/> <input type="text" name="username"/> <input type="button" value="提" onclick="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.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"></property> <property name="maxInMemorySize" value="10240000"></property> </bean>
2.使用jQuery.form.js方法
Jquery.form.js是一个强大的表单插件,其大量的提供了表单操作的各种简便的方法,下面给出一些Jquery.form.js的说明:
ajaxForm增加所有需要的事件监听器,为ajax提交表单做准备。ajaxForm并不能提交表单。在document的ready函数中,使用ajaxForm来为ajax提交表单进行准备。接受0个或1个参数。参数可以是一个回调函数,也可以是一个Options对象。$("#formid").ajaxForm();ajaxSubmit使用ajax提交表单。接受0个或1个参数。参数可以是一个回调函数,也可以是一个Options对象。
$("#formid").ajaxSubmit();
或
$("#formid").submit(function(){
$(this).ajaxSubmit();
return false;
});
formSerialize将表单串行化(或序列化)为一个查询字符串。这个方法将返回以下格式的字符串:name1=value1&name2=value2。无$("#formid").formSerialize();fieldSerialize将表单的字段元素串行化(或序列化)为一个查询字符串。当只有部分表单字段需要进行串行化(或序列化)时,使用这个就很方便了。返回以下格式的字符串:name=value1&name2=value2。无$("#formid .specialFields").fieldSerialize();fieldValue返回匹配插入数组中的表单元素值。该方法以数组的形式返回数据。如果元素值被判定可能无效,则数组为空。无$("#formid :password").fieldValue();resetForm将表单恢复到初始状态。无$("#formid").resetForm();clearForm清除表单元素。该方法将所有的text、password、textarea置空,清除select元素中的选定,以及所有radio按钮和checkbox按钮重置为非选定状态。无$("#formid").clearForm();clearFields清除字段元素。只有部分表单元素需要清除时方便使用。无$("#formid .specialFields").clearFields();Options对象
ajaxForm和ajaxSubmit都支持众多的选项参数,这些选项参数可以使用一个Options对象来提供。
target指明页面中由服务器响应进行更新的元素。元素的值可能被指定为一个jQuery选择器字符串、一个jquery对象、一个DOM元素。默认值:nullurl指定提交表单数据的URL。默认值:表单的action属性值type指定提交表单数据的方法(method):“GET”或“POST”。默认值:GETbeforeSubmit表单提交前被调用的回调函数。如果回调函数返回false表单将不被提交。回调函数带三个调用参数:数组形式的表单数据,jQuery表单对象,以及传入ajaxForm/ajaxSubmit中的Options对象。默认值:nullsuccess表单成功提交后调用的回调函数。然后dataType选项值决定传回responseText还是responseXML的值。默认值:nulldataType返回的数据类型:null、"xml"、"script"、"json"其中之一。默认值:nullresetForm表示如果表单提交成功是否进行重置。默认值:nullclearForm表示如果表单提交成功是否清除表单数据。默认值:null
它也支持对一个表单的ajax提交,而且提交方式更为简便,如下:
<form id="tf"> <input type="file" name="img"/> <input type="text" name="username"/> <input type="button" value="提" onclick="test();"/> </form>然后使用一句代码就可以直接进行提交。$("#tf").ajaxSubmit();OK,它也支持文件上传的。(第二部分表格为百度内容。)
- Ajax提交form表单,Ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传,转载
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 使用ajax提交form表单,包括ajax文件上传
- ajax提交表单form,form包含文件上传
- 通过Ajax提交form表单来提交上传文件
- Form提交,Ajax上传文件
- form表单,AJAX上传文件
- java怎么编程写一个能导致死锁的程序
- mysql链接,导入,导出等命令
- RxJava2 / RxJava2操作符scan
- android7.0 FileProvider配置安装apk文件的姿势
- 解决 sql server 数据库日志文件太大
- Ajax提交form表单,Ajax文件上传
- IntelliJ Idea 常用快捷键 列表
- Dubbo——Transport网络传输层
- c# 讯飞语音 sdk
- 四大框架(面试题)
- new与malloc的区别
- 摩拜单车稳居行业第一 智能化运维是关键
- 什么是高端PLC?高端PLC技术的发展动力
- Python装饰器、metaclass、abc模块