关于jquery序列化表单的使用,以及jquery-ajax上传文件

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>文件上传</title>  
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>  
<script type="text/javascript" src="js/jquery.form.js"></script>  
<script type="text/javascript" src="js/jquery.json-2.2.js"></script>

<script type="text/javascript">

(function($){  
    $.fn.serializeJson=function(){  
        var serializeObj={};  
        var array=this.serializeArray();  
        var str=this.serialize();  
        $(array).each(function(){  
            if(serializeObj[this.name]){  
                if($.isArray(serializeObj[this.name])){  
                    serializeObj[this.name].push(this.value);  
                }else{  
                    serializeObj[this.name]=[serializeObj[this.name],this.value];  
                }  
            }else{  
                serializeObj[this.name]=this.value;   
            }  
        });  
        return serializeObj;  
    };  
})(jQuery);


</script>
  
<script type="text/javascript">

     function subimtBtn() {
         var param = $("#fileForm").serializeJson();
         //调用自己手动封装的方法,返回的是个js的数组对象还不是一个json串
         //要想返回一个json串还需使用jquery.json-2.2.js将数组对象转化为json串
         var params = $.toJSON(param);
         alert(params);
         
         //普通的ajax是不支持二进制文件上传的,所以这里要使用jquery.form.js,这样可以使用ajaxSubmit来提交带文件的表单
         /*
         可以将第一次序列化后的数组对象传入后台,其中包含了文件信息和普通的文本表单信息
         同时也可以将再次序列化的json串传入后台,也是包含了两者的信息,但是在后台使用apache的上传工厂是会多遍历json串
         该测试是在servlet作为后台进行测试的,框架的测试待续
         var serializeObj={};  
         var array=$("#fileForm").serializeArray();  
         //var str=$("#fileForm").serialize();  
         $(array).each(function(){  
             if(serializeObj[this.name]){  
                 if($.isArray(serializeObj[this.name])){  
                     serializeObj[this.name].push(this.value);  
                 }else{  
                     serializeObj[this.name]=[serializeObj[this.name],this.value];  
                 }  
             }else{  
                 serializeObj[this.name]=this.value;   
             }  
         }); */  
         
        
        /* var form = $("form[name=fileForm]");  
        var options  = {    
            //url:'UploadServlet',    
            url:'${pageContext.servletContext.contextPath}/servlet/UploadServlet',    
            type:'post',
            dataType:'json',
            success:function(data)    
            { 
                alert(data);
                var jsondata = eval("("+data+")");  
                if(jsondata.error == "0"){  
                    var url = jsondata.url;  
                    alert(url); 
                    $("#img").attr("src",url);  
                }else{  
                    var message = jsondata.message;  
                    alert(message);  
                }  
            }    
        };    
        form.ajaxSubmit(options);   */
        
        //$("#fileForm").submit(); 
        
        $("#fileForm").ajaxSubmit({
            url:'UploadServlet',
            type:'post',
            data:params,
            dataType:'json',
            success:function(data){
                
                alert(data.success);
            }
        });
        
       /*  $.ajax({
            type:'post',
            url:'UploadServlet',
            data:params,
            dataType:'json',
            success:function(data){
                alert(data.success);
            }
            
        });  */
    }  
</script>  
</head>  
<body>  
            <div class="modal-body">  
                  
           <form action='' enctype="multipart/form-data" method="post" id="fileForm" name="fileForm">  
                    文件:<input type="file" name="filename"> <br> 
                    用户名:<input type="text" name="username" id="username"><br>
                    密码:<input type="password" name="password" id="password"><br>
                    年龄:<input type="text" name="age" id="age"><br>
                    邮箱:<input type="text" name="email" id="email"><br>
</form>  
                  
            </div>  
  
            <div class="modal-footer">  
                <button class="btn btn-primary"  οnclick="subimtBtn()">提交</button>  
            </div>  
  
    <div>  
     <img alt="img" src="" id="img">  
    </div>  
</body>  
</html>
结果图片
前端的json串:
序列化的数组
序列化的json串


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值