JQuery,AJAX,Struts2传送JSON数据



JQuery,AJAX,Struts2传送JSON数据 。示例说明:整合Struts2的项目中,使用JQuery或AJAX传送JSON数据,实现页面无刷新更新数据。
环境:Struts-2.3.4 JQuery-1.8.0
其他说明:要传送JSON数据,另外需要几个Jar文件,拿我使用Struts2.3.4来说,要在struts2-blank的基础上额外导入的Jar文件是commons-logging-1.1.1.jar,json-lib-2.3-jdk15.jar,struts2-json-plugin-2.3.4.jar。另外,在这个小例子中,也处理了中文乱码问题。
代码:
HTML:

  1. <body>
  2. <span id=”btn” style=”cursor:pointer; font-size:20px;”>action</span>
  3. <div id=”rdiv”>要显示数据的区域</div>
  4. </body>

JQuery:

  1. $(“#btn”).click(function() {
  2. alert(“start – lssrc”);
  3. //AJAX方式
  4. $.ajax({
  5. type:”GET”,
  6. url:”getJSON.action”,
  7. data:”name=”+encodeURI(encodeURI(“蓝海魔方”)),
  8. //需要两次转码,Action接受时也需要一次转码.将在Action注明
  9. dataType:”json”,
  10. success:function(data) {
  11. $(“#rdiv”).html(“lssrc返回的数据:” + data.dateJSON);
  12. }
  13. });
  14. //JQuery方式
  15. //中文需要一次转码,Action接受时也需要一次转码.将在Action注明
  16. /*
  17. $.get(“getJSON.action”, {name:encodeURI(“蓝海魔方”)}, function(data){
  18. $(“#rdiv”).html(“返回的数据:” + data.dateJSON);
  19. }, “json”);
  20. */
  21. });

Struts2的配置文件struts.xml:

  1. <?xml version=”1.0″ encoding=”UTF-8″ ?>
  2. <!DOCTYPE struts PUBLIC
  3. “-//Apache Software Foundation//DTD Struts Configuration 2.3//EN”
  4. “http://struts.apache.org/dtds/struts-2.3.dtd”>
  5. <struts>
  6. <!– 加入i18n.encoding,这里要与传送数据的编码一致 –>
  7. <constant name=”struts.i18n.encoding” value=”UTF-8″ />
  8. <constant name=”struts.enable.DynamicMethodInvocation” value=”false” />
  9. <constant name=”struts.devMode” value=”true” />
  10. <!– 如果要传送JSON数据,extends要把原来的struts-default改为json-default –>
  11. <package name=”default” namespace=”/” extends=”json-default”>
  12. <global-results>
  13. <result name=”error”>/error.jsp</result>
  14. </global-results>
  15. <!– 结果的类型要注明是json类型 –>
  16. <action name=”getJSON”>
  17. <result type=”json”></result>
  18. </action>
  19. </package>
  20. </struts>

Action:

  1. package com.lssrc;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class UserAction extends ActionSupport {
  4. private static final long serialVersionUID = 1L;
  5. private String dateJSON;
  6. private String name;
  7. @Override
  8. public String execute() throws Exception {
  9. //这里对接受的数据进行一次转码.解决中文乱码问题
  10. this.name = java.net.URLDecoder.decode(name,”UTF-8″);
  11. System.out.println(“从客户端接受到的数据 : ” + name);
  12. dateJSON = “[{name:'lssrc',age:1},{name:'蓝海魔方',age:2}]“;
  13. return SUCCESS;
  14. }
  15. public String getDateJSON() {
  16. return dateJSON;
  17. }
  18. public void setDateJSON(String dateJSON) {
  19. this.dateJSON = dateJSON;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. public void setName(String name) {
  25. this.name = name;
  26. }
  27. }

如有其他问题,可以给我留言。共同学习!!!

http://lsw1991abc.blog.163.com/blog/static/21594182201210622355925/