action与ajax互传值

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代码:只要外部命名且setgetaction方法里只要赋值就可以。

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);

}

}); 



例三:actionlist类型传给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是什么样的数据。

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值