您的位置:首页 > 其它

调一次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()方法且执行一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax