js选择checkbox值,组织成key-value形式,传值到后台

最近项目中遇到这样一个问题,接口定义需要传一个Map<String,String[]> params的参数,需要在jsp页面组织数据到后台操作,所以记下来以后难免还会用到。

以下是javascript代码:

	var jsonData = new Array(); //定义一个用来作传递数据变量	
	var temp =[];//该变量是为了判断最后一次循环而定义 
	$("input[name='waybillNo']:checked").each(function(){ //遍历所有checkbox选中的值
		temp.push($(this).val());//设置值到数组中
	});	

	$("input[name='waybillNo']:checked").each(function(index,element){//遍历运单号
		temp.length--;

		var waybillNos = new Array();
		var carIds = new Array();
		
		waybillNos.push($(this).val()); //添加运单号到waybillNos数组
		
		$(this).parent().next().next().find("input[name='carIds']:checked").each(function(){//遍历车辆ID
			carIds.push($(this).val());//添加车辆ID到carIds数组
		});
		
		if(temp.length !=0){
			jsonData.push(waybillNos+":"+carIds+"|");//组织数据
		}else{//最后一次循环
			jsonData.push(waybillNos+":"+carIds);//组织数据
		}
		waybillNos = [];//清空数组,准备下一次循环
	});
	
	//发送ajax请求
	$.ajax({
           type: "post",
           url: "${pageContext.request.contextPath}/waybill/auth/updateStatus.do",
           data:"param="+jsonData,
           dataType: "POST",
           success: function(data){
			if(data.success){
				alert("操作成功!");
			}else{
				alert("操作失败!");
			}	            	
           },
            error: function(){
            	alert("系统异常,请联系管理员!");
            }
       });

后台用springMVC接受参数param,代码如下:

<span style="white-space:pre">	</span>/**
	 * 后台Java方法
	 * @author yunns
	 * @date 2015-8-12 下午2:44:35 
	 * @version V1.0
	 */
	@RequestMapping("/auth/updateWaybillStatus.do")
	@ResponseBody
	public Map<String,Object> updateStatus(String param)throws Exception{
		Map<String,Object> model = new HashMap<String, Object>();
		Map<String,String[]> params = new HashMap<String, String[]>();
		try {	
			String paramData = param.replace("|,", "|");//替换字符串
			//组织数据
			String[] s1 = paramData.split("\\|");
			for (String s : s1) {
				String[] s2 = s.split(":");
				String[] carIds = s2[1].split(",");
				params.put(s2[0], carIds);
			}
			waybillBaseService.confirmDriverWaybill(params, SecurityHelper.getAccountName());
			this.setSuccessFlag(model);
		} catch (Exception e) {
			this.setFailFlag(model);
			logger.error("修改状态出错!", e);
		}
		return model;
	}




版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-11-27 14:36  codingcloud  阅读(1058)  评论(0编辑  收藏  举报