json架包在网上下了几次架包,我一度以为不可能是架包的问题,结果还是因为少了一个架包。。。。
弄了一天多总算成功了,试着记一下:
先创一个测试类test
public class test { private String a; private String b; public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } }
创建一个action类
private test t; private JSONObject retujson; public JSONObject getRetujson() { return retujson; } public void setRetujson(JSONObject retujson) { this.retujson = retujson; } public test getT() { return t; } public void setT(test t) { this.t = t; } public String testjson(){
String a= ServletActionContext.getRequest().getParameter("a").toString();
String b= ServletActionContext.getRequest().getParameter("b").toString();
System.out.println(a);
System.out.println(b);
t=new test();
t.setA("aaa");
t.setB("bbb");
retujson=JSONObject.fromObject(t); System.out.println(retujson); return SUCCESS; }
retujson是返回页面的json数据
配置struts.xml:
<package name="test" extends="json-default" namespace="/"> <action name="testjson" method="testjson" class="com.test.action.testaction"> <result type="json"> <param name="root">retujson</param> </result> </action> </package>
js代码:
$.ajax({ url:"testjson.action", data:{"a":"aa","b":"bb"}, async : false, type:"POST", dataType:"json", success:function(data){ alert("ok"); alert(data.a); alert(data.b); datas={"data":data};//将数据添加到全局 },error:function(data){ alert("no ok"); }