jsp采用ajax传递数组给后台controller并遍历
ajax传递数组,期间出各种各样的问题,那叫一个头疼,网上各种查,都没有解决,最终摸索摸索加借鉴搞定,不多说,上代码
1 /* 复选框选定部分 */ 2 $("#delete").click(function(){ 3 var array = []; 4 $("input[name='singlecheckbox']:checked").each(function(){ 5 array.push($(this).val()); 6 alert($(this).val()) 7 }) 8 alert(JSON.stringify(array)); 9 $.ajax({ 10 url:"delete.action", 11 dataType:"json", 12 traditional:true, 13 contentType:"application/json", 14 type:"POST", 15 data:JSON.stringify(array), 16 success:function(data){ 17 window.loacation.href="list.action"; 18 } 19 }) 20 21 })
controller层
1 @RequestMapping(value="/delete.action",method=RequestMethod.POST) 2 @ResponseBody 3 public void delete(@RequestBody String ids){ //注意因为我的数组传递过来不是对象形式只是[1,2,3,4]形式,接收的形参用的是String,需要注意,所以不能转为JSONObject 4 System.out.println("ids:"+ids); 5 // ObjectMapper json= new ObjectMapper(); 6 JSONArray json = JSONArray.fromObject(ids); 7 System.out.println(json.size()+"json的长度"); 8 if(json.size()>0){ 9 for(int i=0;i<json.size();i++){ 10 // JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象---因为我的数组只是简单的数字,所以不能转成对象,报错不适用 11 System.out.println(json.get(i)+"=") ; // 得到 每个对象中的属性值 12 } 13 } 14 }
网上给的都是对象形式如,我这块同样需要相应jar包
当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时。
首先要导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包
String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; // 一个未转化的字符串
JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray 对象
if(json.size()>0){
for(int i=0;i<json.size();i++){
JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
System.out.println(job.get("name")+"=") ; // 得到 每个对象中的属性值
}
}
本博主支持并坚持原创,本博客文章将以原创为主。