Action如下:
private String email;
private String content;
private Dbdao db;
private Map<String,String> addstatus;
private String result;public String execute()throws Exception {
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("application/json");
addstatus= new HashMap<String, String>();
addstatus.put("email", getEmail());
addstatus.put("content", getContent());
JSONObject jsonobj =JSONObject.fromObject(addstatus);

result=jsonobj.toString();

db=Dbdao.instance();
db.insertStatus(email, content);

return "status";

}
struts2.xml如下:
    <action name="insertstatus" class="action.InsertStatus">
  <result >/hello.jsp
     </result>
    <result type="json" name="status">  
    </result>
    </action>
js如下:$(document).ready(function(){
$("#btn_status").click(function()
{$.getJSON("insertstatus.action",function(data){
  $("#info").html("");
  alert(data.content);
  $("#info").append("<div><font color='green'>the content is:"+data.content+"</font></div>");
}
);
}
);
}
);
生成文件如下:
{"addstatus":{"content":"asd","email":"[email protected]"},"content":"asd","email":"[email protected]","result":"{\"content\":\"asd\",\"email\":\"[email protected]\"}"}json文件已经生成为什么,回调函数为空!

解决方案 »

  1.   

    补充说明,如果alert(data)弹出[object object].如果如果访问内容返回null
      

  2.   

    用firefox查看一下json的数据格式是怎么样的  
    data.content看你的data的数据中有没有content的节点
      

  3.   

    <result type="json" name="status"> 
    <param name="root">addstatus</param>
    </result>
    改成这样试试
      

  4.   

    json格式检查工具:JsonViewerPackage
      

  5.   

    这个要用jsonplugin这个jar包的,并且struts2配置文件里要extends="json-default"
    这样struts2才知道type="json"是什么东东!当然也可以写自己的json过滤器
      

  6.   

    还有你怎么访问内容的,要eval('(' +data+ ')')后再访问内容;
      

  7.   

    谢谢我已经解决了。是因为我html代码的form和js都重复提交了action。谢谢各位,结贴了