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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。