调一次ajax执行两次action或是还有执行其他的action
2016-01-07 17:15
288 查看
解决方法一:
Action中的业务方法前别加get 或者 set(属性的get set 除外)
解决方法二:
在调用的action和其他也被莫名其妙执行的action的头部加@JSON(serialize=false)就可以了。导入的包为:import org.apache.struts2.json.annotations.JSON;
例子:action代码
@JSON(serialize=false)
@Action(value = "/datalist", results = { @Result(name = "success", location = "/showTable.jsp") })
public String getdatainterface(){
System.out.println("------------------datalist-----------------");
List<RkrmRscZxid> list=datainterface.getAllInterfaces();
session.put("data", list);
return "success";
}
@JSON(serialize=false)
@Action(value = "/tablelist", results = { @Result(name="success",type="json") })
public String gettable(){
System.out.println("--------------tablelist----------------");
System.out.println(username);
List<RkrmRscZxid> list=datainterface.getAllInterfaces();
session.put("data", list);
List<String> list1=datainterface.gettable(username);
List<RkrmZxid> list2 = new ArrayList<RkrmZxid>();
for(int i=0;i<list1.size();i++){
RkrmZxid rkrmZxid = new RkrmZxid();
rkrmZxid.setTable_name(list1.get(i));
list2.add(rkrmZxid);
}
ActionContext tx= ActionContext.getContext();
err="0";
tx.getSession().put("err",err );//将值放在session中
session.put("tablelist", list2);
return "success";
}
ajax代码:
$("#chaxun").click(function(){
alert("chaxun");
var select = $("#zyid");
var value = select.attr("value");
alert(value);
var data = {"username":value};
var url="tablelist";
$.ajax({
url : url, //后台处理的地址
type : "POST",
data :data ,
dataType : "json",
success : function(m) {
//location.reload(true);
alert("success!!");
var err = m.err;
alert(err);
},
error : function(m){
alert("error!!1");
var err = m.err;
alert(err);
//location.reload(true);
}
});
event.stopPropagation();
});
这个例子只想执行action的gettable()方法,但是他会把此方法执行两次,还要执行一次getdatainterface();加上@JSON(serialize=false)就好了,只执行gettable()方法且执行一次
Action中的业务方法前别加get 或者 set(属性的get set 除外)
解决方法二:
在调用的action和其他也被莫名其妙执行的action的头部加@JSON(serialize=false)就可以了。导入的包为:import org.apache.struts2.json.annotations.JSON;
例子:action代码
@JSON(serialize=false)
@Action(value = "/datalist", results = { @Result(name = "success", location = "/showTable.jsp") })
public String getdatainterface(){
System.out.println("------------------datalist-----------------");
List<RkrmRscZxid> list=datainterface.getAllInterfaces();
session.put("data", list);
return "success";
}
@JSON(serialize=false)
@Action(value = "/tablelist", results = { @Result(name="success",type="json") })
public String gettable(){
System.out.println("--------------tablelist----------------");
System.out.println(username);
List<RkrmRscZxid> list=datainterface.getAllInterfaces();
session.put("data", list);
List<String> list1=datainterface.gettable(username);
List<RkrmZxid> list2 = new ArrayList<RkrmZxid>();
for(int i=0;i<list1.size();i++){
RkrmZxid rkrmZxid = new RkrmZxid();
rkrmZxid.setTable_name(list1.get(i));
list2.add(rkrmZxid);
}
ActionContext tx= ActionContext.getContext();
err="0";
tx.getSession().put("err",err );//将值放在session中
session.put("tablelist", list2);
return "success";
}
ajax代码:
$("#chaxun").click(function(){
alert("chaxun");
var select = $("#zyid");
var value = select.attr("value");
alert(value);
var data = {"username":value};
var url="tablelist";
$.ajax({
url : url, //后台处理的地址
type : "POST",
data :data ,
dataType : "json",
success : function(m) {
//location.reload(true);
alert("success!!");
var err = m.err;
alert(err);
},
error : function(m){
alert("error!!1");
var err = m.err;
alert(err);
//location.reload(true);
}
});
event.stopPropagation();
});
这个例子只想执行action的gettable()方法,但是他会把此方法执行两次,还要执行一次getdatainterface();加上@JSON(serialize=false)就好了,只执行gettable()方法且执行一次
相关文章推荐
- 解决Ajax悬停效果,无法遮蔽FLASH的问题
- 再谈Jquery Ajax方法传递到action(补充)
- Dom在ajax技术中的作用说明
- 使用Ajax实时检测"用户名、邮箱等"是否已经存在
- 探讨Ajax中同步与异步之间的区别
- ajax中data传参的两种方式分析
- 原生AJAX写法实例分析
- 探秘ajax跨域请求
- JQuery ajax返回JSON时的处理方式 (三种方式)
- Ajax中浏览器和服务器交互详解
- ajax实现点击不同的链接让返回的内容显示在特定div里
- ajax 动态传递jsp等页面使用id辨识传递对象
- ajax与传统web开发的异同点
- AJAX简单应用实例-弹出层
- AJAX初级教程之初识AJAX
- Ajax无刷新分页的性能优化方法
- jquery对ajax的支持介绍
- jQuery基于ajax实现星星评论代码
- Ajax 说的比较清楚的一篇文章
- 强烈推荐 - Ajax 技术资源中心