日期:2014-05-17  浏览次数:20837 次

Action结合Ajax怎么用呢?java中的
请求会发送到action中 也没报错。但是返回jsp中页面中没内容,我用servlet和ajax结合的就可以。。代码一样。。为什么?

action类

public String execute() throws Exception {
HttpServletRequest request=(HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response=(HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out=response.getWriter();
List<User> users=new ArrayList<User>();
User u1=new User("张三", 12);
User u2=new User("小美", 15);
users.add(u1);
users.add(u2);
JSONArray json=JSONArray.fromObject(users);
out.print(json.toString());
return super.SUCCESS;



struts.xml

 <package name="default" namespace="/" extends="struts-default">
       <!-- 配置测试的action -->
       <action name="test" class="action.JsonForAction">
        <result name="success">/jsonForAction.jsp</result>
       </action>


jsp

<p id="wait"></p>
   <input type="hidden" value="小明" id="name"/>
   <input type="hidden" value="17" id="age"/>
<input type="button" value="显示" id="bnt"/>
<div id="display"></div>



js

$("#bnt").click(function(){
$.ajax({
  type:"post", //请求方式
  url:"http://localhost:8080/Ajax/test.action", //发送请求地址
  data:{ //发送给数据库的数据
   name:$("#name").val(),
   age:$("#age").val()
  },
  //请求成功后的回调函数有两个参数
  success:function(data,textStatus){
$("#wait").css("display","none");
   var jsonObj = eval(data);
   for(var i=0;i<jsonObj.length;i++){
   $("#display").html($("#display").html()+jsonObj[i].name+"今年"+jsonObj[i].age+"岁!!!<br/>");
   }
  }

});
});


------解决方案--------------------
楼主只需要简单的两个改动
一个是action的execute方法return null
一个是配置文件<result name="success" type="json">/jsonForAction.jsp</result>把这个result的跳转去掉
即只要<action name="test" class="action.JsonForAction"></action>