`

AJAX级联菜单实例,js

阅读更多
AJAX级联菜单实例

说明 ajax级联菜单,例如,一级菜单选择中国,二级菜单列出中国城市;一级菜单选择美国,二级菜单列出美国城市。

数据库脚本 count.sql

DROP TABLE IF EXISTS `country`;

CREATE TABLE `country` (

`id` int(11) NOT NULL auto_increment,

`name` varchar(50) default NULL,

`city` varchar(50) default NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


insert into country values(1,'中国','沈阳') ;

insert into country values(2,'中国','北京') ;

insert into country values(3,'美国','洛杉矶') ;

insert into country values(4,'美国','纽约') ;


DAO

package edu.syict.www.dao;


import java.util.List;


import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.Transaction;


import edu.syict.www.HibernateSessionFactory;


public class DBOperator {

       @SuppressWarnings("unchecked")

       public List queryByName(String name){

              Session session = HibernateSessionFactory.getSession();

              List list=null ;

              String hql="SELECT co.city FROM Country AS co WHERE co.name=?" ;

              System.out.println(hql+name);

              Transaction tx = null;    

              try {

                     tx = session.beginTransaction();

                     Query query=session.createQuery(hql) ;

                     query.setString(0, name) ;

                     list=query.list() ;

                     System.out.println("数据库中记录个数:"+list.size()) ;

                     tx.commit() ;

              } catch (HibernateException e) {

                     if (tx != null)

                            tx.rollback();

                     throw e;

              }finally{

                     session.close();

              }    

              return list ;

       }

}



Bean类(Hibernate反向工程)Country.java

package edu.syict.www.POJO;

@SuppressWarnings("serial")

public class Country implements java.io.Serializable {

       private Integer id;

       private String name;

       private String city;


       public Country() {

       }

       public Country(String name, String city) {

              this.name = name;

              this.city = city;

       }

       public Integer getId() {

              return this.id;

       }

       public void setId(Integer id) {

              this.id = id;

       }

       public String getName() {

              return this.name;

       }

       public void setName(String name) {

              this.name = name;

       }

       public String getCity() {

              return this.city;

       }

       public void setCity(String city) {

              this.city = city;

       }

}


Country.hbm.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping>

    <class name="edu.syict.www.POJO.Country" table="country" catalog="test">

       <id name="id" type="java.lang.Integer">

            <column name="id" />

            <generator class="identity" />

        </id>

        <property name="name" type="java.lang.String">

            <column name="name" length="50" />

        </property>

        <property name="city" type="java.lang.String">

            <column name="city" length="50" />

        </property>

    </class>

</hibernate-mapping>



JSP页面

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ page import="java.util.*" %>

<%@ page import="edu.syict.www.dao.*" %>

<%@ page import="edu.syict.www.POJO.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

    <title>My JSP 'menu.jsp' starting page</title>

</head>


<body>

<%

    Country c=null ;

    DBOperator dbo=new DBOperator() ;

    List listname=dbo.query("SELECT DISTINCT co.name FROM Country AS co") ;

    List listcity=dbo.query("SELECT DISTINCT co.city FROM Country AS co") ;

   

%>

<center>

<script type="text/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) { // 信息已经成功返回,开始处理信息XMLHttpReq.status == 200

                updateMenu();

            } else { //页面不正常

                  alert("您所请求的页面有异常。");

            }

        }

    }

    //更新菜单函数

    function updateMenu() {

        var res=XMLHttpReq.responseXML.getElementsByTagName("res") ;

        //alert("res===="+res[0].firstChild.nodeValue);

        /**下面是用innerHTML输出控件内容的一般用法**/

        //var subMenu = "";

        //for(var i = 0; i < res.length; i++) {

        //    subMenu = subMenu + " " + res[i].firstChild.data + "";

        //}

        //currentSort.innerHTML = subMenu;

       

        var list = document.all.list;

        list.options.length=0;

        list.add(new Option("---请选择---",""));

        for(var i=0;i<res.length;i++){

            list.add(new Option(res[i].firstChild.nodeValue,res[i].firstChild.nodeValue));

        }

    }

    // 创建级联菜单函数

    function showSubMenu(obj) {

       //currentSort =document.getElementById(obj);

        //currentSort.parentNode.style.display = "";

        sendRequest("menujsp.jsp?sort=" + obj);

        /**下面这一句的作用是:每次选择后回到第一个选项**/

        //document.all.mli.options[0].selected=true;

    }

</script>

    <select name="mli" onchange="showSubMenu(this.options[this.options.selectedIndex].value)" style="width:150px;">

           <option value="">---bbb---</option>

    <%

    for(int i=0;i<listname.size();i++){

           //c=(Country)listname.get(i) ;

           out.println("<option value='"+listname.get(i)+"'>"+listname.get(i)+"</option>") ;

    }

    %>

    </select>

    <select name="list" style="width:100px;">

           <option value="">---aaa---</option>

    <%

    for(int i=0;i<listcity.size();i++){

           out.println("<option value='"+listcity.get(i)+"'>"+listcity.get(i)+"</options>") ;

    }

    %>

    </select>

    <br>

</center>

</body>

</html>



JSP页面后台

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ page import="java.util.*" %>

<%@ page import="edu.syict.www.dao.*" %>

<%@ page import="edu.syict.www.POJO.*" %>


<%

       response.setContentType("text/xml; charset=UTF-8");

       response.setHeader("Cache-Control","no-cache");

      

       String sort=request.getParameter("sort") ;

      

       sort=new String(sort.getBytes("ISO8859-1"),"GB2312") ;

      

       System.out.println("转换编码后sort:"+sort) ;

      

       DBOperator dbo=new DBOperator() ;

       List cityes=new ArrayList() ;

       try{

              cityes=dbo.queryByName(sort) ;

       }catch(Exception e){

              e.printStackTrace() ;

       }

       out.println("<response>");

              for(int i=0;i<cityes.size();i++){

                     out.println("<res>"+cityes.get(i).toString()+"</res>") ;

                     System.out.println(cityes.get(i)) ;

              }

       out.println("</response>");

%>



js传参数乱码

前端l两次encode

var unitNm = encodeURI(encodeURI(unitNm));



action中decode

unitNm = URLDecoder.decode(unitNm,"UTF-8");

分享到:
评论

相关推荐

    Ajax 实现级联菜单

    在实现Ajax级联菜单时,首先需要使用JavaScript处理用户的交互事件,如点击或选择某个选项。通常,我们会为相关元素添加事件监听器,当用户触发特定行为时,执行相应的函数。 3. **XMLHttpRequest对象**: ...

    AJAX实例的级联菜单

    在AJAX级联菜单中,用户通常会选择一个主类别,然后基于这个选择,相关的子类别会即时地在下一个下拉框中加载,无需页面刷新。这种交互方式提供了流畅的用户体验,提高了网页的响应速度和效率。 在给定的文件中,...

    Ajax应用实例-在线用户计数实例、在线表格编辑实例、 无刷新形式的查询功能实例、实时校验实例、Web级联菜单实例

    5. **Web级联菜单实例**: 级联菜单常用于下拉选择,当用户选择一个选项时,相关的下级菜单会自动显示。Ajax可以在不刷新页面的情况下,根据用户的选择从服务器获取相关数据,构建新的下级菜单。例如,当用户选择一...

    Ajax级联菜单实例代码

    在本文中,我们将深入探讨Ajax级联菜单的实现方法,这是一种常见的前端交互设计,用于提高用户体验,特别是当处理大量关联数据时。级联菜单通常在选择一个选项后动态加载相关选项,例如省份与城市的关系。这里,我们...

    用jquery开发的ajax各种实例包括(级联菜单,谷歌式搜索提示,可编辑表格页面无刷新切换等)

    在本文中,我们将深入探讨如何使用jQuery库进行AJAX(异步JavaScript和XML)开发,通过实际案例来学习包括级联菜单、谷歌式搜索提示和可编辑表格在内的常见功能。这些功能都允许用户在不刷新整个页面的情况下与网页...

    jQuery+ajax实现三级级联

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

    Js Select下拉框级联菜单 5级列表菜单.rar

    Js Select下拉框级联菜单,一共支持5级联动,相信够用了,这种菜单不用多介绍吧,后一级的值与前一级是父、子关系,该示例还演示了动态添加菜单、减少菜单的功能,还有显示/不显示空值的功能,如演示截图所示。

    jsp+db的js级联菜单

    在压缩包中的两个文件"jiliancaidan.jsp"和"jsjilian0.jsp"可能分别代表不同的级联菜单实例或者不同的功能部分。"jiliancaidan.jsp"可能是主菜单的实现,而"jsjilian0.jsp"可能是一个子菜单或者一个特定功能的入口。...

    .netMVC架构下无刷新三级级联菜单源码

    本示例中的".net MVC架构下无刷新三级级联菜单源码"是一个典型的前端与后端交互场景,它展示了如何利用ASP.NET MVC框架以及DropdownList控件来实现一个动态的、无需页面刷新的三级级联菜单。这个菜单的数据是从...

    JSP+AJAX+MYSQL实现二级级联菜单

    在IT领域,构建动态、交互性强的Web应用是常见的需求,而"JSP+AJAX+MYSQL实现二级级联菜单"就是一个典型的实例。这个技术组合主要用于创建能够实时更新且具有前后端交互功能的Web界面,使得用户在选择一级菜单时,...

    asp.net级联菜单

    总的来说,使用JavaScript、ListBox和Control在ASP.NET中实现级联菜单需要结合客户端和服务器端的技术,通过JavaScript进行交互逻辑处理,利用ASP.NET控件展示菜单,同时通过AJAX技术实现数据的动态加载。...

    JQuery实例-年月日级联菜单.rar )

    【标题】"JQuery实例-年月日级联菜单.rar" 涉及的知识点主要集中在JavaScript库JQuery上,具体实现的是一个交互式的年、月、日选择器,这种级联菜单在网页表单中常见,用于日期输入。下面将详细解释相关技术及其应用...

    JSP Ajax省市县Select级联菜单.rar

    总的来说,这个JSP Ajax省市县Select级联菜单的实例展示了如何结合JSP和Ajax技术,实现实时的前端与后端通信,提供流畅的用户交互体验。对于学习和理解Web开发中的动态数据交互,这是一个非常实用的案例。开发者可以...

    Jquery实例2:可收缩展开的级联菜单与局部刷新

    本实例"Jquery实例2:可收缩展开的级联菜单与局部刷新"聚焦于利用jQuery实现动态交互效果,特别是创建可折叠的级联菜单和页面的局部刷新功能。这些功能在现代网页设计中极为常见,可以提升用户体验,使网站更加直观...

    美化版的jQuery全国城市级联菜单代码包

    摘要:脚本资源,jQuery,级联菜单,全国城市菜单 美化版的jQuery全国城市级联菜单代码实例包,Select下拉框已经过美化,比传统的灰色风格Select下拉列表更美观,城市菜单信息存放在XML文件内,若城市信息有所变动,...

    AJAX+ASP.NET 多级无刷新下拉列表菜单

    1. **异步加载数据**:当用户选择上级菜单时,使用JavaScript或jQuery监听选择事件,触发AJAX请求到服务器获取下级菜单的数据。 2. **动态渲染菜单**:服务器返回数据后,使用JavaScript动态地创建和填充下级菜单,...

    ASP 实用的ajax二级联动菜单

    综上所述,"ASP 实用的ajax二级联动菜单"是一个结合了前端交互和后端数据处理的实例,它展示了如何利用Ajax技术在ASP环境中创建动态、交互性强的Web应用程序。通过学习和理解这个案例,开发者可以提升自己在服务器端...

    select级联二级菜单

    级联菜单的实现方式多种多样,一种常见的是使用JavaScript库,如jQuery。在这种情况下,`Area.js`可能包含了自定义的jQuery插件,利用`$(function() {...})`包裹代码以确保DOM加载完成后再执行。此外,`$.ajax`或`...

    城市级联实例 数据库交互

    【城市级联实例 数据库交互】是指在网页应用中实现的一种动态联动效果,通常用于省市县三级联动选择。在这个例子中,用户从一个下拉菜单(例如“省份”)中选择一个选项,然后该选择会触发一个事件,通过Ajax技术向...

    城市级联实例 4种实现方式 实在好用

    1. **纯JavaScript实现**:通过JavaScript代码动态生成和更新下拉菜单。当用户选择一个省份时,触发事件并加载相应的城市数据,更新城市选择框。这种方法对开发者要求较高,需要手动处理数据加载和DOM操作。 2. **...

Global site tag (gtag.js) - Google Analytics