Action接受ajax传值的问题:
例一:Js代码:其中将td数组转化成String
function a(){
var input = $("input[name=a1]");
var tr = input.parent().parent().siblings();
var trlenght = tr.length;
var td = [];
$("#show1").find("td").each(function(i) {
var t = $(this).text();
if(t!=""){
td.push(t);
}
});
var data = {"td":td.toString()};
var url="get";
$.ajax({
url : url, //后台处理的地址
type : "POST",
data :data ,
dataType : "json",
success : function() {
location.reload(true);
},
error : function(){
location.reload(true);
}
});
}
Action代码:
private String td;
public String getTd() {
return td;
}
public void setTd(String td) {
this.td = td;
}
@Action(value="/get",results={@Result(name="success",type="json")})
public String get(){
System.out.println("oooooooooooooo");
System.out.println(td);
/*td输出的结果:rkrm$_rsc_dido,rkrm$_rsc_ii,rkrm$_rsc_indi,rkrm$_rsc_zxid*/
return "success";
}
ajax接受action传值的问题:
例一:action将单个String或是其他类型传给ajax的问题。
首先取到ActionContext的对象:ActionContext tx= ActionContext.getContext();
再用actionContext的对象建立map集合,将值放在键值对中,ajax通过map的键获取map的值:
Action代码:屏蔽的也试了 都成功
@Action(value="/get",results={@Result(name="success",type="json")})
public String get(){
ActionContext tx= ActionContext.getContext();
err="0";
tx.getSession().put("err",err );//将值放在session中
//tx.getContextMap().put("err", err);//map对象
//tx.getParameters().put("err", err);
//ActionContext.getContext().put("err",err);//静态方法也可以
//tx.getApplication().put("err",err);
return "success";
}
ajax代码:
$("#chaxun").click(function(){
alert("chaxun");
var select = $("#zyid");
var value = select.attr("value");
alert(value);
var data = {"username":value};
var url="get";
$.ajax({
url : url, //后台处理的地址
type : "POST",
data :data ,
dataType : "json",
success : function(m) {
//location.reload(true);
alert("success!!");
var err = m.err;
var greeting = m.greeting;
alert(err);
},
error : function(m){
alert("error!!1");
var err = m.err;
alert(err);
//location.reload(true);
}
});
event.stopPropagation();
});
方法二:
方法二例二:action代码:只要外部命名且set和get,action方法里只要赋值就可以。
private String err;
public String getErr() {
return err;
}
public void setErr(String err) {
this.err = err;
}
@JSON(serialize=false)
@Action(value = "/tablelist",results={ @Result(name="success",type="json") })
public String gettable(){
err="0";
return "success";
}
Ajax代码:eval(m);将传输转换成js数据的形式,再用他去action的属性即可:
$.ajax({
url : url, //后台处理的地址
type : "POST",
data :data ,
dataType : "json",
success : function(m) {
//location.reload(true);
alert("success!!");
var json=eval(m);
var err=json.err;
alert(err);
},
error : function(m){
alert("error!!1");
var json=eval(m);
var err=json.err;
alert(err);
//location.reload(true);
}
});
例三:action将list类型传给ajax的问题。
Action代码:
@Action(value="/check",results={@Result(name=SUCCESS,type="json")})
public List<GoodsSupplier> getGslist() {
return gslist;
}
public void setGslist(List<GoodsSupplier> gslist) {
this.gslist = gslist;
}
public String check(){
gslist=iGoodsSupplierDao.getAllSupplierId(goodsSupplier);
//ActionContext tx= ActionContext.getContext();
//tx.getSession().put("list", gslist);
return SUCCESS;
}
Ajax代码:
$("#sh").change(function(){
//把表单数据进行序列化
var supplier=$("#sh").val();
var params={"goodsSupplier.supplier.supplierId":supplier};
//使用jQuery中的$.ajax({});Ajax方法
$.ajax({
url:"check",
type:"post",
data:params,//要传递的数据
dataType:"json",
success:function(m){
var list=m.gslist;//主要用到的是action的get和set方法传的值
if($("#goodName").html("")!=null){
$("#goodName").html("");
$("#goodName").append("<option>请选择商品</option>");
}
for(var i=0;i<list.length;i++){
$("#goodName").append("<option value="+list[i].goods.goodsId+">"+list[i].goods.goodsName+"</option>");
}
},
});
方法三:利用json的write()方法
@SuppressWarnings("serial")
public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {
public static final String FAIL = "fail";
public static final String SUCCESS = "success";
protected HttpServletRequest request = null;
protected HttpServletResponse response = null;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
public void writeJson(Object object) {
try {
String json = JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm:ss");
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().write(json);
ServletActionContext.getResponse().getWriter().flush();
ServletActionContext.getResponse().getWriter().close();
} catch (IOException e) {
e.printStackTrace();
}
}
在action中继承BaseAction ,之后再方法里面用this.writeJson(o)调用这个方法,方法里面的o可以是单个字符串也可以是list,
在ajax中,success : function(data) {
$("#quzhi_a").val(data);
}
如果o为单个字符串,data本身就是,这直接用就可以了;
如果o为list的话,data就以数组的方法使用即可,一般是data[0].name ,具体是什么样的格式,还是看你的action是什么样的数据。
}