servlet3.0以上form表单提交(ajax异步提交)

一、普通form提交

1、jsp

<form id="form" method="post" name="upload" enctype="multipart/form-data" action="/index.do">
    <input type="file" id="file111" name="file" οnchange="checkAll(this)"/>
    <input type="text" name="text" value="123">
    <input type="submit" value="submit"/>
</form>

2、servlet(还有一个使用Apache的commomFileUpload插件上传)

@MultipartConfig(location = "/upload",maxFileSize = 1024*1024*3,maxRequestSize = 1024*1024*10,fileSizeThreshold = 1)//一定要表明该注解
public class HelloServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String text = req.getParameter("text");
        Part part = req.getPart("file");
        part.write("D:\\test.jpg");

        /**
         * 多文件上传的处理
         */
        Collection<Part> parts = req.getParts();
        for (Part part1 : parts) {
            //处理方式
        }
    }
}

其中:

  • location:表示文件存储的位置。默认为当前文件工作运行路径。
  • maxFileSize:允许上传的文件最大值(单位为字节),默认为-1,表示没有限制。
  • maxRequestSize:针对该mulitpart/from-data请求的最大值(单位为字节),默认为-1.
  • fileSizeThread:当数据量大于该值时,内容将被写入文件。

二、AJAX异步传输

1、使用FormData对象传输

(1)html

	<form id="tf">
            <input type="file" name="img"/>
            <input type="text" name="username"/>
            <input type="button" value="提" οnclick="test();"/>
                        .............
 
	</form>
(2) js (jquery)

无文件的上传

 var form = new FormData();
  form.append("username","zxj");//form中的文本域
  form.append("password",123456);//form中的文本域
 $.ajax({
          url:"${pageContext.request.contextPath}/public/testupload",
          type:"post",
          data:form,
          processData:false,
	  contentType:false,
          success:function(data){
                  }
  });

有文件的上传

 function test(){     
	var form = new FormData(document.getElementById("tf"));
            $.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();
//
此处为上传文件的进度条

        }

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元素。默认值:null
url指定提交表单数据的URL。默认值:表单的action属性值
type指定提交表单数据的方法(method):“GET”或“POST”。默认值:GET
beforeSubmit表单提交前被调用的回调函数。如果回调函数返回false表单将不被提交。回调函数带三个调用参数:数组形式的表单数据,jQuery表单对象,以及传入ajaxForm/ajaxSubmit中的Options对象。默认值:null
success表单成功提交后调用的回调函数。然后dataType选项值决定传回responseText还是responseXML的值。默认值:null
dataType返回的数据类型:null、"xml"、"script"、"json"其中之一。默认值:null
resetForm表示如果表单提交成功是否进行重置。默认值:null
clearForm表示如果表单提交成功是否清除表单数据。默认值:null

 

那么现在来说一些它的主要用法吧!

 

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

html:

<
form 
id
="tf"
>

            <
input 
type
="file"
 name
="img"
/>

            <
input 
type
="text"
 name
="username"
/>

            <
input 
type
="button"
 value
="提"
 onclick
="test();"
/>

        </
form
>

下面使用jquery.form.js的表单插件来提交表单

$("#tf").ajaxSubmit();

额,就是这么简单,你也不要问我为什么就是这么简单,然后它就是会把整个表单,作为一个ajax来提交,同样的,它也支持文件上传!一些其它的用法,请参照前面给出的说明就可以了!



具体情况http://transcoder.baiducontent.com/from=1019023i/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2001%2Cta%40iphone_1_9.1_3_601/baiduid=8D95CDADA887ED97CD3670EBF339EE00/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=13911048936435242302&order=3&fm=alop&h5ad=1&srd=1&dict=32&tj=www_normal_3_0_10_title&url_mf_score=5&vit=osres&m=8&cltj=cloud_title&asres=1&title=%E4%BD%BF%E7%94%A8ajax%E6%8F%90%E4%BA%A4form%E8%A1%A8%E5%8D%95%2C%E5%8C%85%E6%8B%ACajax%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0-%E6%9C%B1..._%E5%8D%9A%E5%AE%A2%E5%9B%AD&w_qd=IlPT2AEptyoA_yi9Jk_-nQDWO6wvtItSok6ZsxezdeJc&sec=23930&di=5ffb834b52dd9a2f&bdenc=1&tch=124.1233.278.740.1.1100&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRASDfaOH_XHEv5wSPQpt5Ywk_f_G9p9B2CwvQkfjS&eqid=c10df94dc54c58001000000559b89a66&wd=&clk_info=%7B%22srcid%22%3A%221599%22%2C%22tplname%22%3A%22www_normal%22%2C%22t%22%3A1505270637142%2C%22sig%22%3A%22262431%22%2C%22xpath%22%3A%22div-a-h3%22%7D

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值