美文网首页
jsp页面中局部模块数据刷新的实现

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

作者: ClearWang | 来源:发表于2017-07-29 12:50 被阅读0次

需求如下图所示:


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和服务器之前的异步(没有获得响应之前我可以做我的事情而不是一直等待),这样执行操作也会快很多。

相关文章

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

    需求如下图所示: 1.首先想到的方式是: 给发布类型(select标签)添加onchange()事件,值不同,调用...

  • ajax与jsonp的区别及用法

    首先我们应该知道ajax和jsonp可以与后台通信,获取数据和信息,但是又不用刷新整个页面,实现页面的局部刷新。接...

  • vue 局部数据刷新 setInterval/setTimeou

    在页面使用定时器实现局部刷新setInterval 在代码中console会发现数据实时更新,但是dom却没有变化...

  • jsp局部刷新

    以防大家不懂下面的拙劣代码是个什么东东,我先说一下这个思路。我在页面上需要局部刷新一个表格,这个表格是根据搜索框点...

  • 六、商户模块(二)

    目标:加入相关商户模块的jsp页面,实现交互 加入businessList.jsp 加入相关的css 、js文件 ...

  • 1.利用ajax获取后台数据

    特点:能够局部刷新网页数据,不用重新加载整个页面。

  • Ajax实现页面局部刷新

    最近开发网站,需要实现Ajax实现页面局部刷新,花了2天时间搞定,做个记录 开发环境 WAMP集成开发环境,也就是...

  • 四、广告模块(二)

    目标:加入相关广告模块的jsp页面,实现交互 先添加adList.jsp 添加对应的css、jsadList.js...

  • flutter provider使用及其原理分析

    官方刷新框架provider及其实现原理。 Provider:实现数据改变时,对应的局部widget自动刷新。 响...

  • vuejs入门-子路由(三)

    上次说了整页导航,这次我们说页面局部导航局部导航白话就是:页面局部刷新或是视图局部刷新 1.搭建项目:vue in...

网友评论

      本文标题:jsp页面中局部模块数据刷新的实现

      本文链接:https://www.haomeiwen.com/subject/hsoqlxtx.html