jsp页面中局部模块数据刷新的实现

需求如下图所示:


1.首先想到的方式是:

给发布类型(select标签)添加onchange()事件,值不同,调用不同的action做数据处理,转发到不同的jsp页面上去显示:代码如下:

<script language="javascript">

         function reUpdate(val) {

         if(val=="1") {

               document.form.action="firmware!gotoaddConf.do";

               document.form.submit();

          }else if(val=="2") {

                document.form.action="firmware!gotoaddConf2.do";

                document.form.submit();

           }

}

</script>

<select name="releaseType1"style="width=220"id="select1"onchange="reUpdate(this.value)">

<optionvalue ="1">发布版本option>

<%--内测版本--%><optionvalue ="2"selected>公测版本option>

select>

对应的struts.xml部分:(url中以firmware!开头的网页都会去对应的action中找对应的方法,例如这里的GetFirmwareAction,去找对应的方法,例如http://localhost:8090/firmware!gotoaddConf.do就会去GetFirmwareAction中找gotoaddConf的方法。gotoaddConf方法返回值即代表要转发的jsp页面的逻辑名称,例如gotoaddConf方法会返回一个“addConf”的字符串,就会去structs.xml中找对应的jsp页面,这里是addfirwareconf.jsp.如何做到的?这就是使用架构的好处

<actionname="firmware!*"class="com.yf.weloop.action.GetFirmwareAction"method="{1}">

<resultname="addConf">/admin/addfirwareconf.jspresult>

<resultname="addConf2">/admin/addfirwareconf2.jspresult>

action>

对应的action和响应的方法:

public classGetFirmwareActionextendsBaseAction {

...

publicString gotoaddConf() {list=firmwareService.getfirmtype();list2=firmwareService.getFirmwareVersion();

return"addConf";

}

publicString gotoaddConf2() {list=firmwareService.getfirmtype();list2=firmwareService.getFirmwareVersion();

return"addConf2";

}

...

}

这种方式的一个缺点是:需要在action中新建不同的方法处理不同的响应逻辑,需要处理多个jsp页面,显示不同的页面,最主要的问题是整个页面都会刷新。


2.方式2:使用ajax技术

方法1:

<scripttype="text/javascript"src="<%=request.getContextPath()%>/js/jquery-1.10.2.js">script>

(将ajax函数封装在.js文件中,所以要引入该js文件,如下方式引入)

<scriptsrc="<%=request.getContextPath()%>/js/myajax.js">script>

myajax.js中:

function ajaxUpdate1(val) {

var xmlhttp;

if(window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera,      Safarixmlhttp=newXMLHttpRequest();

}else{// code for IE6, IE5xmlhttp=newActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function() {

if(xmlhttp.readyState==4&&xmlhttp.status ==200) {

varstr=xmlhttp.responseText;

varobj=eval("("+str+")");//将数据转换成json类型

if(val =="1") {

if(obj[0].wn02b01 !=null) {

$("#firmwareVersion1").val(obj[0].wn02b01);

}

}else if(val =="2") {

if(obj[1].wn02b01 !=null) {

$("#firmwareVersion1").val(obj[1].wn02b01);

}

}

}

}

xmlhttp.open("GET","firmware!getData.do",true);

xmlhttp.send();

}

方法2:

myajax中:

functionajaxUpdate3(val) {

$.ajax({

type:"GET",

url:"firmware!getData.do",

async:true,

//dateType: "json",   

data:null,

success:function(data) {

var obj=eval("("+data+")");//将数据转换成json类型if(obj[0].wn02b01 !=null) {

$("#firmwareVersion1").val(obj[0].wn02b01);

}

},

error:function(e) {

alert("获取数据失败!");

}

});

}else if(val =="2") {

$.ajax({

type:"get",

async:true,

//dateType:"json",

data:null,

success:function(data) {

varobj=eval("("+data+")");//将数据转换成json类型// alert("调用数据成功!");

if(obj[1].wn02b01 !=null) {

$("#firmwareVersion1").val(obj[1].wn02b01);

}

},

error:function(e) {

alert("获取数据失败!");

}

});

}

}

注意:ajax的以上两中方法都需要导入jquery-1.10.2.js当然,可以使用不同的版本。

Ajax的最大的好处是,只刷部分模块,而且可以实现js和服务器之前的异步(没有获得响应之前我可以做我的事情而不是一直等待),这样执行操作也会快很多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,621评论 18 399
  • AnswerYas阅读 161评论 0 0
  • 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放...
    孤魂草阅读 886评论 0 0
  • 一. Java基础部分.................................................
    wy_sure阅读 3,810评论 0 11
  • 前几天,我们又度过了一个喜闻乐见的愚人节,有别出心裁恶搞整蛊的、有借机调侃抒发心中抑郁的、更有假戏真做表白试探的,...
    众眼看世界阅读 382评论 0 1