S2SH+jquery+JSON实现Ajax

直接把QQ日志搬进来,偷下懒 嘿嘿。
一、准备
  1、S2SH整合相关问题这里不做过多介绍;

  2.、引入实现Ajax相关的jar包:测试项目中所采用的Struts版本为struts2.1.8,该版本jar包中包含所需插件(json-lib-2.1.jar,struts2-json-plugin-2.1.8.1.jar),之前版本可能需要下载JSON插件;

  3、引入jquery相关JS文件;

二 、工程中实现Ajax

  这里以实现二级联动下拉菜单为例。

  1、在JSP页面中编写前端javascript:项目中使用了jquery的$.getJSON(url,params,function callback(data))函数提交ajax请求到指定url,各个参数的含义为:

   url:处理请求的地址,本工程中对应Action中的一个方法;

   params:请求参数;

   callback(data):回调函数,即接收到服务器处理结果后前端页面执行的方法,data为服务器返回的结果;

  2、Ajax请求的配置:Ajax请求类型有别于一般struts2请求,继承自json-default,返回结果类型为json,json-default和“json”的结果类型都在struts2-json-plugin-2.1.8.1.jar的struts-plugin.xml中定义;

   struts.xml中action的配置如下:

   <package name="ajax" namespace="/ajax" extends="json-default">
     <action name="getsub" class="transBfAction" method="getSubAccList">
     <result type="json">
    <param name="excludeProperties">.*hibernateLazyInitializer</param>
    <param name="root">result</param>
     </result>
</action>
</package>

  其中,与一般action配置不同的是package 中的 extends的设置,aciton返回结果result的返回类型;result中的第一个参数是解决hibernate反射关闭的也就是实体中的属性是另外的实体的问题,有待进一步考察;第二个参数表示返回结果,其值和Action中名称须保持一致,本项目中在Action类中定义了一个名称为result的属性,在对应方法中将返回值赋值给了result;
  3、前台JSP接收请求返回结果:本工程使用了JS的eval方法将返回结果data转换成JSON对象,之后进行处理。

  下面附上JS代码和相关Action中的代码:

  JS:$(function(){
  $("#acct").change(function(){
var URL = "/ebank/ajax/getsub.shtml";
params = {'index':$(this).val()};
$.getJSON(URL,params,function callback(data){
var JSON_text = eval("("+data+")");
var myOptions = "";
for(var i=0;i<JSON_text.length;i++){
myOptions +='<option value="' + JSON_text[i].optionValue +'">' + JSON_text[i].optionDisplay + '</option>';
}
$("#subacct").html(myOptions)
});
});
$("#acct").change();
})

$(function(){
$("#acct").change(function(){
var URL = "/ebank/ajax/getsub.shtml";
params = {'index':$(this).val()};
$.getJSON(URL,params,function callback(data){
var JSON_text = eval("("+data+")");
var myOptions = "";
for(var i=0;i<JSON_text.length;i++){
myOptions +='<option value="' + JSON_text[i].optionValue +'">' + JSON_text[i].optionDisplay + '</option>';
}
$("#subacct").html(myOptions)
});
});
$("#acct").change();
})

JS中注意params的写法, params = {'index':$(this).val()};index将''号;

  Action对应方法代码:

  public String getSubAccList() {
 String JSON_text = "";

//获取请求参数
String acctid = this.request.getParameter("index");

  //中间具体数据处理代码略

......

//将返回结果赋值给result,与struts.xml中一致
this.result = JSON_text;
 return SUCCESS;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值