`
aijuans
  • 浏览: 1565580 次
社区版块
存档分类
最新评论

Ajax的常用技巧(2)---实现Web页面中的级联菜单

    博客分类:
  • Ajax
阅读更多

在网络上显示数据,往往只显示数据中的一部分信息,如文章标题,产品名称等。如果浏览器要查看所有信息,只需点击相关链接即可。在web技术中,可以采用级联菜单完成上述操作。根据用户的选择,动态展开,并显示出对应选项子菜单的内容。
在传统的web实现方式中,一般是在页面初始化时动态获取到服务端数据库中对应的所有子菜单中的信息,放置到页面中对应的位置,然后再结合CSS层叠样式表动态控制对应子菜单的显示或者隐藏。采用这种方法的弊端在于会造成浏览端下载的页面非常冗余,许多根本用不到的信息也必须提前装载到页面中。而如果借用Ajax技术,可以实现当用户选择对应的菜单项后,将对应的请求以异步的方式提交到服务端,然后又选择地从服务器端获取到对应的子菜单信息,在返回浏览器进行响应显示。
  现在创建一个实例,以演示使用Ajax技术实现级联菜单的操作。在该实例中根据用户选择的作者名称,在子菜单中显示对应的个人信息。为了减少程序的复杂度,这里没有采用数据库中的数据实现。

1,服务器端的代码


本实例服务器端的代码主要实现依据客户端发送的数据,产生不同的相应信息。打开记事本,输入下列代码:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String sort=request.getParameter("sort");
String contents1="";
String contents2="";
if(sort.equals("IBM")){
contents1="岗位:责任编辑";
contents2="联系方式:15651865007";
}
else{
contents1="岗位:策划编辑";
contents2="联系方式:15298381049";
}
response.setContentType("text/xml; charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
out.println("<response>");
out.println("<res>"+contents1+"</res>");
out.println("<res>"+contents2+"</res>");
out.println("</response>");
out.close();
%>


将上述代码保存,名称为menujsp.jsp。在该文件中,使用request对象获取客户端传送的变量sort的值。创建两个变量contents1和contents2,依据客户端传送的数值,给变量contents1和contents2赋不同的值,然后使用response对象,将contents1和contents2的值,以xml文件格式返回给客户端。

2,客户端代码

本实例客户端代码主要实现异步数据传输,并依据服务端返回的数据显示。打开记事本,输入下列代码:

<%@ page contentType="text/html; charset=gb2312"  import="java.sql.*" errorPage="" %>
<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<LINK href="images/css.css" type=text/css rel=stylesheet>
</head>
<script language="javascript">
var XMLHttpReq;
	var currentSort;
 	//创建XMLHttpRequest对象       
    function createXMLHttpRequest() {
		if(window.XMLHttpRequest) { //Mozilla 浏览器
			XMLHttpReq = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) { // IE浏览器
			try {
				XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
	}
	//发送请求函数
	function sendRequest(url) {
		createXMLHttpRequest();
		XMLHttpReq.open("GET", url, true);
		XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
		XMLHttpReq.send(null);  // 发送请求
	}
	// 处理返回信息函数
    function processResponse() {
    	if (XMLHttpReq.readyState == 4) { // 判断对象状态
        	if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
				updateMenu();
		    } else { //页面不正常
		      	alert("您所请求的页面有异常。");
		    }
        }
    }
	//更新菜单函数
	function updateMenu() {
	    var res=XMLHttpReq.responseXML.getElementsByTagName("res")
	    var subMenu = "";
	    for(var i = 0; i < res.length; i++) {
	        subMenu = subMenu + "  " + res[i].firstChild.data + "<br>";
	    }
		currentSort.innerHTML = subMenu;
	}
	// 创建级联菜单函数
	function showSubMenu(obj) {
		currentSort =document.getElementById(obj); 
		if(currentSort.parentNode.style.display=="none"){
		currentSort.parentNode.style.display = "";
		sendRequest("menujsp.jsp?sort=" + obj);
		}
		else{
		currentSort.parentNode.style.display = "none";
		}
	}

</script> 
<table style="BORDER-COLLAPSE: collapse" borderColor=#111111 
cellSpacing=0 cellPadding=0 width=200 bgColor=#f5efe7 border=0>

<TR>
  <TD align=middle bgColor=#dbc2b0 height=19><B>作者清单</B> </TD>
</TR>
<tr>
  <td height="20"> <a href="javascript:showSubMenu('IBM')">刘海松</a> </td>
</tr>
<tr style="display:none">
   <td height="20" id="IBM"> </td>
</tr>
<tr>
  <td height="20"> <a href="javascript:showSubMenu('SONY')">刘红霞</a> </td>
</tr>
<tr style="display:none ">
  <td id="SONY" height="20"> </td>
</tr>
</table>


将上述代码保存,名称为menu.jsp。在该文件中,用createXMLHttpRequest()函数创建了XMLHttpRequest实例化对象,sendRequest(url)函数向服务器端发送一个异步请求,参数url表示服务器端的文件路径,名称和函数。ProcessResponse()函数用于处理服务器端的响应,该函数主要依据客户端返回的XML文件,解析XML文件数据,并显示在当前页面。ShowSubMenu(obj)函数是一个创建级联菜单函数,实际上该函数调用了sendRequest()函数向服务器发送异步信息。
      该实例中的服务器端数据不但可以使用变量赋值获取,也可以从数据库中提取数据来显示。如果读者有兴趣的话,可以使用数据库表中的数据响应客户端的请求。

分享到:
评论

相关推荐

    Ajax-级联菜单

    在Web开发中,Ajax被广泛用于实现动态交互效果,比如级联菜单就是一种常见的应用场景。级联菜单允许用户逐级选择,通常在下拉框中展示,每次选择一个类别后,下一个级别的选项会根据上一级的选择动态加载。 级联...

    java实现Ajax级联菜单

    在IT行业中,级联菜单(Cascading Menu)是一种常见的用户界面元素,它允许用户通过多级选择来筛选或导航到特定的信息。在本案例中,我们关注的是如何使用Java和Ajax技术来实现一个二级联动的菜单。Ajax,即...

    jQuery+ajax实现三级级联

    在这个“jQuery+ajax实现三级级联”的实例中,我们主要探讨如何利用这两种技术来创建一个能够逐级联动的下拉菜单系统,这在数据筛选和表单填写中十分常见,如地区选择、部门分类等场景。 首先,jQuery是一个轻量级...

    级联菜单 动态级联菜单

    动态级联菜单的实现可以通过多种方式,例如使用javascript、JQuery、Ajax等技术。其中,使用javascript和服务器端脚本结合的方式是最为常见的。 在上面的代码中,我们可以看到使用了VBScript作为服务器端脚本语言,...

    Ajax 实现级联菜单

    在本文中,我们将深入探讨如何使用Ajax技术实现级联菜单,这是一种常见的前端交互设计,用于在Web应用程序中创建动态和响应式的下拉菜单。级联菜单允许用户在多个相关选项间进行选择,如省份-城市-区县的层级关系。...

    运用ajax+jsp+servlet实现三级级联菜单

    在这个案例中,我们探讨如何运用AJAX、JSP和Servlet技术来实现一个三级级联菜单。 **AJAX (Asynchronous JavaScript and XML)** 是一种在不刷新整个网页的情况下,与服务器交换数据并更新部分网页的技术。它通过...

    AJAX实例的级联菜单

    这个实例中的“级联菜单”是AJAX应用的一个常见场景,常用于下拉选择框,其中一个选项的选择会动态地影响另一个选项的显示内容。 在AJAX级联菜单中,用户通常会选择一个主类别,然后基于这个选择,相关的子类别会...

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

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

    ajax实现级联菜单的类子

    Ajax(Asynchronous JavaScript and XML)技术的引入,使得级联菜单不再需要刷新整个页面就能动态地加载和更新数据,提高了用户体验。本文将深入探讨如何使用Ajax来实现级联菜单,并结合数据库获取数据。 首先,...

    级联 ajax实现方式

    在Web开发中,级联(Cascading)Ajax是一种常见的技术,用于实现多级下拉菜单或者联动选择的效果。这种技术通常用在需要用户按顺序选择一系列相关选项的场景,如地区选择,先选国家,再选省份,最后选城市。这种级联...

    Ajax_实现级联菜单

    ### Ajax 实现级联菜单详解 #### 一、引言 在现代Web应用开发中,交互性和用户体验至关重要。Ajax(Asynchronous JavaScript and XML)技术因其能够实现页面局部刷新而受到广泛青睐,尤其在构建动态菜单系统时优势...

    异步级联菜单脚本示例

    总结来说,异步级联菜单是通过结合AJAX和JavaScript技术,实现在用户交互过程中动态加载和更新菜单数据的一种方法。这种技术提高了用户体验,使得用户可以在不刷新整个页面的情况下浏览多级菜单,尤其适用于数据层次...

    Web树形级联菜单,连接oracle,嵌套ajax

    在Web开发中,树形级联菜单是一种常见的用户界面元素,尤其在数据层次结构复杂的系统中,如组织架构、文件目录或数据库表关系的展示。本项目实现了将这种菜单与Oracle数据库连接,利用Ajax和Servlet技术,实现了动态...

    AJAX学习总结(六)---可收缩展开的级联菜单和局部刷新

    在本篇“AJAX学习总结(六)---可收缩展开的级联菜单和局部刷新”中,我们将深入探讨如何利用AJAX技术实现交互性更强的Web应用,特别是针对级联菜单和页面局部刷新这两个功能。AJAX(Asynchronous JavaScript and ...

    Ajax实现java web 中下拉列表二级联动

    在Java Web开发中,二级联动下拉列表是一种常见的交互功能,通常用于地区选择、类别分类等场景。...通过以上步骤和注意事项,我们就可以在Java Web应用中成功实现Ajax驱动的二级联动下拉列表,提升用户的交互体验。

    java web下开发二级级联下拉菜单(数据库实现的)

    首先,我们需要创建一个数据库表来存储级联菜单的数据。假设我们有一个名为`category`的表,它有两列:`id`(主键,整型),`name`(字符串)和`parent_id`(整型,表示父级ID)。`parent_id`为0时代表顶级菜单项,...

    js加html编写的级联菜单

    级联菜单(Cascading Menu)是Web开发中常见的交互元素,主要用于呈现具有层次结构的数据。在本案例中,我们讨论的是使用JavaScript和HTML技术实现的级联菜单,且该菜单能够与数据库进行交互,动态地从数据库中读取...

    struts2 级联菜单

    在Struts2中实现级联菜单是一项常见的需求,通常用于构建复杂的下拉选择框,使得用户能够逐级选择相关选项。级联菜单在数据表关联或者层级结构的展示中非常实用,例如地区选择、部门分类等。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics