ajax实现表单与数组对象同时作为参数提交

1 篇文章 0 订阅
1 篇文章 0 订阅

处理的方式是将表单数据和数据对象都转成json再提交

第一步:
先将表单数据转成我们需要的json格式,通过自定义方法实现,(这个方法是我之前在某个文章拿过来的,但由于没找到原链接,只好在这里说明一下,如有侵权,私信我一下谢谢!)
//用于将表单数据转json

         $.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;
         };

第二步:
ajax请求:

				var list = new Array();
				for( i=0;i<id_name.length;i++){
				    if( id_name[i].checked){
				       id = cg_id_name[i].value;
				       list .push({id: id, cgr_initial_date: $("#initial_Date_time"+id).val(), expiry_date: $("#Date_time"+id).val(),usr_ent_id:$("#sr_ent_id").val() });
				    }
				}
			//其中 id_name是一个数据数组;

	    	       $.ajax({
			        url : "${ctx}/app/admin/Mgt/insert",
			        type : 'POST',
			        data: { 
			        		'mgtJson' : JSON.stringify($('#formId').serializeJson()),
			        		'mgtGroupArrayJson' : JSON.stringify(list)
			              }
			        		,
			        dataType : 'json',
			        traditional : true,
			        success : function(data) {
			        	//alert("注册成功!");
			        }

第三步,在JsonUtils类构造json解析方法:

	/** 
     * 从一个JSON 对象字符格式中得到一个java对象,形如: 
     * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}} 
     * @param object 
     * @param clazz 
     * @return 
     */  
    public static Object getDTO(String jsonString, Class<?> clazz){  
        JSONObject jsonObject = null;  
        try{
        	setDataFormat2JAVA();
            jsonObject = JSONObject.fromObject(jsonString);
            filterNullParams(jsonObject);
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        return JSONObject.toBean(jsonObject, clazz);  
    } 

    /** 
     * 从一个JSON数组得到一个java对象数组,形如: 
     * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...] 
     * @param object 
     * @param clazz 
     * @return 
     */  
    public static List<?> getDTOArray(String jsonString, Class<?> clazz){  
        JSONArray array = JSONArray.fromObject(jsonString);  
        List<Object> list = new ArrayList<Object>();
        for(int i = 0; i < array.size(); i++){  
            JSONObject jsonObject = array.getJSONObject(i);
            filterNullParams(jsonObject);
            list.add(JSONObject.toBean(jsonObject, clazz));
        }  
        return list;  
    }  
    private static void setDataFormat2JAVA(){  
        //设定日期转换格式  
        JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));  
    }

第四步,controller接收:

    @RequestMapping(value = "insert", method = RequestMethod.POST)
    @ResponseBody
    @SuppressWarnings("unchecked")
    public String save(Model model,
    		@RequestParam(value = "mgtJson", required = false, defaultValue = "") String mgtJson,
    		@RequestParam(value = "mgtGroupArrayJson", required = false, defaultValue = "") String mgtGroupArrayJson) throws Exception {
    	
    	Mgt mgt = (Mgt) JsonUtils.getDTO(mgtJson, Mgt.class);
		List<mgtGroup> mgtGroups = (List<mgtGroup>) JsonUtils.getDTOArray(mgtGroupArrayJson, mgtGroup.class);
		//进一步的业务
		model.addAttribute("type", "add");
		return JSON.toJSONString(model);
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值