使用Ajax传递JSON比较容易,但是如果要传递JSON数组,需要一点小技巧。
而且在实际开发中,当我们需要一次性保存多条记录的时候,表单通过表单提交比较麻烦,但是使用JSON数组来传递就比较方便了,下面看一个例子:
JS中提交请求:
/**
* 保存会话阈值
*/
save:function(){
var jsonArr = []; //待传递的JSON数组
for(var i=0;i<3;i++){//给JSON数组赋值
var id =...;
var name = ...;
var code = ...;
jsonArr.push({"id":id,"name":name,"code":code});
}
$.ajax({
url:...,
data:{
arr:JSON.stringify(jsonArr)//将JSON数组转化为字符串,重要的一步
},
success:function(e){
}
});
}
控制层接收请求:
@RequestMapping("/save")
public void save(@RequestParam Map<String,Object> param){
try {
String jsonData = param.get("arr")==null?"":param.get("arr").toString();
jsonData=new String(jsonData.getBytes("ISO-8859-1"),"UTF-8");
List<SysConfig> list = JSONArray.parseArray(jsonData, SysConfig.class);
service.save(list);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
这里对JSON的处理使用的是开源的Jar包:fastjson-1.2.3.jar