1、初次接触jquery 与 json ,希望大家有点帮助
前台应用ajax 到后台去取json数据
$.ajax({
type: "POST",
url: "ResourseAction!showTables.action",
data:"",
async:false,
success: function(jsonData){
var json = eval(jsonData);
$.each(json,function(i,n){
alert(json[i].name+' '+json[i].value)
alert(n.name+' '+n.value);
});
}
});
上面的两个alert打印的结果是一样的。
一开始向应用struts2的一个json插件,但是由于现在的这个框架很乱了,没有扩展性,所以就还是应用最原始的方法,struts2的json插件在官网上有个很好的例子:https://cwiki.apache.org/confluence/display/WW/JSON%20Plugin讲的很全面
要想在java中应用json 需要 json-lib.*.jar ,另外官网上是这样的
Json-lib requires (at least) the following dependencies in your classpath:
- jakarta commons-lang 2.5
- jakarta commons-beanutils 1.8.0
- jakarta commons-collections 3.2.1
- jakarta commons-logging 1.1.1
- ezmorph 1.0.6
这个有于在一个现成的项目中应用,我查了一下就好像少最后一个,加了进去。
java 方面代码 ,提供了两种方法,对于json真的不熟,有熟悉的还望赐教。但是结果出来了!
/**
* 抽取表名,用json返回到界面
* @return
*/
public String showTables(){
//第一种方法
/*JSONObject json = new JSONObject();
JSONArray jsonArray = new JSONArray();
json.element("name", "table1");
json.element("value", "table1");
jsonArray.element(json);
json = new JSONObject();
json.element("name", "table2");
json.element("value", "table2");
jsonArray.element(json);
json = new JSONObject();
json.element("name", "table3");
json.element("value", "table3");
jsonArray.element(json);
PrintWriter out= null;
try {
HttpServletResponse response = ServletActionContext.getResponse();
out = response.getWriter();
System.out.println("json:"+jsonArray);
out.println(jsonArray);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
//上述打印内容为: json:[{"name":"table1","value":"table1"},{"name":"table2","value":"table2"},{"name":"table3","value":"table3"}]
//第二种方法
StringBuffer bf = new StringBuffer("");
bf.append("[");
bf.append("{'name':'table1','value':'table1'},");
bf.append("{'name':'table2','value':'table2'}");
bf.append("]");
PrintWriter out= null;
HttpServletResponse response = ServletActionContext.getResponse();
try {
out = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("json:"+bf);
out.println(bf);
//上述打印内容为: json:[{'name':'table1','value':'table1'},{'name':'table2','value':'table2'}]
return null;
}
第二种方法前台调用 var json = eval(data);
$.each(json,function(i,n){
//alert(json[i].name);
});
不过个人认为,jquery + ajax + json 不如一个dwr就直接给解决了。
下面是在别人网站上粘贴的一下东西
01.jquery解析json数据: 02.var data=" 03.{ 04.root: 05.[ 06.{name:'1',value:'0'}, 07.{name:'6101',value:'北京市'}, 08.{name:'6102',value:'天津市'}, 09.{name:'6103',value:'上海市'}, 10.{name:'6104',value:'重庆市'}, 11.{name:'6105',value:'渭南市'}, 12.{name:'6106',value:'延安市'}, 13.{name:'6107',value:'汉中市'}, 14.{name:'6108',value:'榆林市'}, 15.{name:'6109',value:'安康市'}, 16.{name:'6110',value:'商洛市'} 17.] 18.}"; 19.//data为字符串类型 则要将字符串类型转换成json数据类型 20.var jsondatas=eval("("+data+")"); 21.$.each(jsondatas.root,function(i,n){ 22.alert("name"+n.name+"value"+n.value); 23.} 24.) 25.//以下为数组类型字符串 转换成json 字符串 解析 26. //数组形式的json字符串 27. var jsondata="[{name:'1',value:'0'}, {name:'6101',value:'西安市'}, {name:'6102',value:'铜川市'}, {name:'6103',value:'宝鸡市'}, {name:'6104',value:'咸阳市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市'}, {name:'6107',value:'汉中市'}, {name:'6108',value:'榆林市'}, {name:'6109',value:'安康市'}, {name:'6110',value:'商洛市'}]"; 28.var json=eval(jsondata); 29.$.each(json,function(i,n){ 30.alert(json[i].name); 31.alert(json[i].value);//根据索引取值 32.}); 33.//json数据字符 不需要转换 34.var json={"Products":[ 35.{"orderid":"11077","customerid":"RATTC"}, 36.{"orderid":"11078","customerid":"RATT"} 37.], 38."Img":[{"id":"12345","url" 39.:"image/1.jpg"} 40.]}; 41.$.each(json.Products,function(i,n){ 42. alert(n.orderid); 43.})