【前台】首先,菜鸟是将要传到页面上的数据存成json格式(不管是用拼接的还是怎么处理的),例如下面这种格式:
String data=[{"name":"name1","num":"num1","conclusion":"yes"},{"name":"name2","num":"num2","conclusion":"no"}]----->这里有两组数据
然后页面会有接收数据的语句,以下说菜鸟遇到的方法:
(1)通过页面提交到action然后再返回到页面的数据
例如:$.post(url,{id:id},function(result){}-------->通过叫具有独立标志的字段id传回action,使用id找到所需的json数据data,传回至参数result中
1 $.post(url,{id:rowObj.id},function(result){ 2 var size=$(result).size();//可计算出json中有多少组数据 3 if(size!=0){ 4 for(var i=0;i<size;i++){ 5 alert(result[i].name);//选取第i组数据中的指定字段 6 alert(result[i].num); 7 alert(result[i].conclusion); 8 } 9 } 10 },'json');
既然指定的字段都出来了,那么我们就会了。(ps:在$.post的外面定义一个var去接收里面的数据,发现数据带不出来,不懂T-T)
(2)如果直接在页面中就获取到了data字符串(没有再去action中获取一遍)
例如:var data=${data};-------->页面本身就可以取到这个值
1 var data=${data}; 2 var c=eval("("+data+")"); 3 /* for (var i in c) { 4 alert(i + "-" + c[i]); 5 } */ 6 if(c.length>0){ 7 for(var k=0;k<c.length;k++){ 8 alert(c[k].name); 9 alert(c[k].num); 10 alert(c[k].conclusion); 11 } 12 }
so,要的东西都出来了,我们可以继续往下做要做的了。
以上两种方法,菜鸟觉得分别应该是一个传进来的本来就是json格式了,一个是要从字符串转成json格式,仅为个人观点。
【后台】前台将拼接好的字符串存在data中
$("data").val("[{\"name\":\"name1\",\"num\":\"num1\",\"conclusion\":\"yes\"},{\"name\":\"name2\",\"num\":\"num2\",\"conclusion\":\"no\"}]");----->这里有两组数据
后台将其从前台取出来:
String dataStr= Struts2Utils.getParameter("data");
JSONArray dataJsonList=null;
if(StringUtils.isNotEmpty(dataStr)){
dataJsonList= JSONArray.fromObject(dataStr);
}
int len = dataJsonList.size();
JSONObject dataJson = null;
for(int i=0;i<len;i++){
dataJson = dataJsonList.getJSONObject(i);
String name= dataJson .getString("name");
String num = dataJson .getString("num");
String conclusion= dataJson .getString("conclusion");
}
获取json中的所有的key值http://blog.csdn.net/deng11342/article/details/7385131
【双引号的替换】
在转换Json格式,或者前台页面例如 input 的 value 的值要将双引号进行转义
String s="18\\\"的鸟速";
System.out.println("s="+s);
String str=s.replaceAll("\\\\\"", "\"");-->java中//代表一个/,然后正则表达式中//转义成一个/,最后四个////代表一个/,有点忘了是不是这样解释的
System.out.println("str="+str);
String str2=str.replace("\"","\\\"");
System.out.println("str2="+str2);
输出结果为
s=18\"的鸟速
str=18"的鸟速
str2=18\"的鸟速
在前台中
var g = '${str2}';
if(g.valueOf("\\\\\"")>=0){
g.replace("\\\\\"",""");-->将前面已经转义成/"转换成"的html的转义字符
}
$("#str").val(g);
警句:菜鸟用爪挖,看者需谨慎,切莫听一面之词,徒走曲折之路。