`
Everyday都不同
  • 浏览: 724815 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

用Ajax技术和dwr框架两种方式实现下拉列表的级联效果

阅读更多
在开发web页面时,常常需要达到某一个文本输入框,更多的是下拉框随另一个下拉框的改变而改变值的"联动"效果。实现这种效果,往往需要我们跟后台进行交互。
这里,我将分别介绍如何使用ajax技术和dwr框架,实现下拉列表的联动效果。

需要实现级联效果的下拉列表:
<TD nowrap="nowrap" width="15%" class="td_title">业务</TD>			 
	            <TD width="35%" nowrap="nowrap">
	            	<s:select id ="serviceId"  name="baiKuServiceVO.serviceId"
                    list="#BaiKu.serviceList" 
                    listKey="serviceId" 
                    listValue="serviceName"  
                    headerKey="0" headerValue="--请选择业务--" cssStyle="width:215px;" 
                     onchange="changeService();"></s:select>
	            </TD>


<TD noWrap class="td_title">道具代码</TD>
				<TD>
					<select id ="consumeCode_select" name="baiKuConsumeCodeMatchVO.consumeCode" style="width:215px;">
						<option value="">-请选择道具代码-</option>
					</select> 
				</TD>

现需要实现道具代码由业务的选择而改变的效果。

第一种:Ajax技术
function changeService() 
      { 
      		var serviceId = document.all.serviceId.value
			var channelId = document.all.channelId.value
			
			if (serviceId == "" || serviceId == 0)
			{
				alert("请选择业务!");
				document.all.serviceId.focus();
				return false;
			}
			
						
	        createXMLHttpRequest(); 
	     
     	 		if(serviceId != "" && serviceId != 0 && channelId != "" || channelId != 0)
     	 		{
	     	 		//业务关联道具
		        	var url="xxx!consumeCodeByServiceIdList.action?serviceId="+serviceId;
		        	xmlHttp.open("post",url,true); 
		        	xmlHttp.onreadystatechange = callback;
		        	xmlHttp.send(null); 
     	 		}
	        	
	        }
       }
      
     function callback()
     { 
		var consumeCode = document.getElementById("consumeCode");
		
		for(var i=consumeCode.options.length;i>=1;i--)
		{
             consumeCode.options.remove(i)
        }
        
        if (xmlHttp.readyState == 4)
         { 
          if (xmlHttp.status == 200) 
          { 
                result = xmlHttp.responseTEXT;//服务器返回值,假设返回值为1	
      			var arr=trim(result).split(",");
      			for(var i=0;i<arr.length-1;i++)
      			{	
      			 		var arr1 = arr[i].split(":");     			 		
      			 		
						if(arr1 == undefined)
							continue;

				document.getElementById("consumeCode_select").options[1] = new Option(arr1[2],arr1[1]); 

	                    	var txt = arr1[1];
	                    	var value = arr1[0];
	                    	var opt=new Option(arr1[1],arr1[0]);
                			document.getElementById("consumeCode_select").options[i+1]=opt;
                }
			}		
           
        }          
     }
 
(注:后台方法省略) 

第二种:dwr框架方式
使用这种方式,首先必须要前期引入:
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'> </script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/util.js'> </script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/BaiKuDwr.js'> </script>

然后dwr.xml配置文件中,也必须对用到的实体类或暴露给js使用的工具类进行相应的配置。例如:
<create creator="new" javascript="BaiKuDwr">
      <param name="class" value="com.xx.xx.xxx.xx"/>
</create>

<convert match="com.xx.hz.xx.BaiKuConsumeCodeVO" converter="bean">
</convert>


在BaiKuDwr工具类中,加上相应处理方法,例如:
public List<BaiKuConsumeCodeMatchVO> getConsumeCodeByService(String serviceId) {
	//处理过程略……	
		return null;
	}


然后JSP页面中的脚本文件:
function changeService() {
		var serviceId = document.getElementById("serviceId").value;
		
		var consumeCode = document.getElementById("consumeCode_select");
		//alert(serviceId);
		removeOptions(consumeCode);
			consumeCode.options[0] = new Option("-请选择道具代码-","");
		
		if(cpId==0){
			alert("请选择合作方");
		}
		 if(serviceId!=0 && cpId!=0) {
			
		//道具代码级联
			BaiKuDwr.getConsumeCodeByService(serviceId,cpId,function (resp){
				for (var i=0;i<resp.length;i++){
					var bean=resp[i];
					consumeCode.options[i+1] = new Option(bean.consumeName,bean.consumeCode);
				}
			});
		
			
			//清空列表
	function removeOptions(form){
		if(form.options.length>0){
			for(var i=(form.options.length-1);i>=0;i--){
				var o=form.options[i];
				form.options[i] = null;
			}	
		}
	}

注:后台方法略去……
dwr框架中结果的引用(如集合什么的)可直接用如#BaiKu.serviceList
的方式。
这里需要特别注意的就是dwr框架在js中的使用语法和他的便捷之处.

通过这两种方式,都能实现两个或多个下拉框(或者是文本框)的"级联"效果!
分享到:
评论

相关推荐

    ajax dwr 框架实现二级联动下拉列表源码

    **Ajax DWR 框架实现二级联动下拉列表源码详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。DWR(Direct Web Remoting)则是一个用于Java web应用的开源...

    Ajax级联菜单,通过dwr框架实现省份城市级联效果

    在这个特定的场景中,我们利用Ajax技术和Direct Web Remoting(DWR)框架来创建一个动态的省份城市级联菜单。这个功能能够提升用户体验,因为它减少了用户手动刷新页面的需求,提供了流畅的交互。 首先,我们需要...

    Ajax的dwr框架实现级联

    Ajax(异步JavaScript和XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术,它极大地提升了用户体验。DWR(Direct Web Remoting)是Ajax的一个框架,它允许JavaScript与Java后端进行直接通信,实现...

    使用DWR框架处理下拉列表的级联

    这个demo演示了使用DWR框架配合数据库来做的下拉列表级联。dao层采用了jsp中经典的JDBC封装、单例、属性文件等技术。数据文件可以按照我的entity层里面写的代码创建就可以了。这个文件直接导入你的工程在属性文件中...

    AJAX技术之DWR框架入门

    **AJAX技术之DWR框架入门** ...总的来说,DWR为Java开发者提供了一种高效、简便的方式来实现AJAX功能,减少了开发时间和复杂度。了解并掌握DWR框架,能帮助我们更好地构建实时、交互性强的Web应用。

    DWR+hibernate+spring级联下拉列表框

    在Web开发中,级联下拉列表框是一种常见的交互元素,它允许用户在选择一个选项后,根据所选选项更新另一个下拉列表框中的选项。本主题将详细讲解如何使用Direct Web Remoting (DWR)、Hibernate 和 Spring 框架来实现...

    Ajax技术及其DWR框架实现

    ### Ajax技术及其DWR框架实现 #### 一、引言 随着互联网技术的快速发展,Web应用的需求日益增加,用户体验成为了衡量Web应用优劣的重要标准之一。传统的Web应用往往过于注重后端逻辑处理,忽视了前端体验的重要性...

    AJAX 与 DWR框架

    Direct Web Remoting (DWR) 是一个开源Java框架,简化了在Web应用中使用Ajax的技术。DWR允许JavaScript代码直接调用服务器端的Java方法,将Java对象转换为JavaScript对象,反之亦然。这样,开发者无需关心底层的...

    java+dwr框架实现聊天室

    dwr(Direct Web Remoting)是一种基于Ajax技术的远程调用框架,提供了一个简单的方式来访问Java对象,实现了服务器推技术。dwr框架的主要特点是可以将Java对象暴露给客户端,实现了实时通信的功能。 二、dwr 框架...

    基于Ajax技术的DWR框架的研究与应用

    ### 基于Ajax技术的DWR框架的研究与应用 #### 概述 随着Web技术的不断发展,用户对于Web应用的交互性和响应速度有了更高的要求。传统的Web开发方式已难以满足这种需求,因此Ajax(Asynchronous JavaScript and XML...

    dwr的小小运用实现下拉列表

    DWR (Direct Web Remoting) 是一个开源Java框架,它允许Web应用程序在客户端JavaScript和服务器端Java代码之间进行实时通信,无需使用XMLHttpRequest(Ajax)或其他插件。DWR简化了在Web应用中实现动态、交互式的...

    Ajax资料,DWR框架资料

    **DWR(Direct Web Remoting)**是一个开源Java框架,它简化了在Web应用中使用Ajax的过程。DWR允许JavaScript在浏览器端直接调用服务器端的Java方法,而无需传统的HTTP请求。这极大地提高了Web应用的交互性和实时性...

    结合ajax技术的 DWR框架技术文档

    DWR(Direct Web Remoting)框架是Web开发中一种强大的工具,它允许JavaScript与服务器端的Java代码进行直接交互,从而实现异步更新页面,提高了Web应用的用户体验。DWR结合Ajax(Asynchronous JavaScript and XML)...

    dwr实现ajax功能ajax+dwr

    **DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在客户端与服务器之间进行实时通信,而无需刷新整个页面。通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous ...

    AJAX DWR框架实现部分刷新效果

    在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种技术,它允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这极大地提高了用户体验,因为用户无需等待整个页面重新加载就能...

    AJAX-DWR下拉框级联

    在这个实验中,我们将重点探讨如何使用AJAX和DWR(Direct Web Remoting)来实现这种功能。 首先,我们需要了解AJAX,它是一种不刷新整个网页的情况下更新部分网页内容的技术。通过XMLHttpRequest对象,我们可以向...

    ajax(DWR框架)实现简单的内容自动补全

    在IT领域,特别是Web开发中,Ajax(Asynchronous JavaScript and XML)技术和DWR(Direct Web Remoting)框架的结合被广泛应用于实现动态网页效果,尤其是内容自动补全功能,这在用户界面交互设计中极为常见。...

    AJAX框架DWR简单应用

    在提供的“AJAX框架DWR简单应用.pdf”文件中,你可能会找到关于如何设置DWR环境、编写Java接口、配置DWR配置文件、在前端JavaScript中使用DWR,以及示例代码和实际运行效果的详细教程。这个文件是学习和理解DWR工作...

    ajax技术和dwr介绍

    **Ajax 技术详解** Ajax(Asynchronous JavaScript and XML...而DWR框架则进一步简化了Ajax应用的开发,提供了更便捷的Java和JavaScript交互方式。理解并掌握这些技术,对于提升Java应用的交互性和响应速度至关重要。

Global site tag (gtag.js) - Google Analytics