j2ee之AJAX二级联动效果

本文实例为大家分享了AJAX二级联动效果的具体代码,供大家参考,具体内容如下

Ajax.js

var createAjax = function(){
  var ajax = null;
  try{
    ajax = new ActiveXObject("microsoft.xmlhttp");
  }catch(e1){
    try{
      ajax = new XMLHttpRequest();
    }catch(e2){
      alert("请换掉你的浏览器");
    }
  }
  return ajax;
}

test3.xml

<%@ page language="Java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <script type="text/javascript" src="js/ajax.js"></script>
  <base href="<%=basePath%>" rel="external nofollow" >
  <title>??</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 </head>
 <body>
     <select id="province">
       <option>请选择省份</option>
       <option>江苏</option>
       <option>江西</option>
     </select>
     <select id="city">
       <option>请选择城市</option>
     </select>
     <script type="text/javascript">
    document.getElementById("province").onchange = function(){
      var cityElement = document.getElementById("city");
      cityElement.options.length = 1;
      /* 拿到第一个下拉框中选中的值 */
      var index = this.selectedIndex;
      var optionElement = this[index];
      var optionValue = optionElement.innerHTML;
      /* 把这个值发送给服务器 */
      var ajax = createAjax();
      var url = "${pageContext.request.contextPath }/SelectServlet?time="+new Date().getTime();
      var method = "POST";
      ajax.open(method , url);
      ajax.setRequestHeader("content-type" , "application/x-www-form-urlencoded");
      var content = "province=" + optionValue;
      ajax.send(content);
      /* -----接收相应的数据----- */
      ajax.onreadystatechange = function(){
        if(ajax.readyState == 4 && ajax.status == 200){
          /* 拿到xml */
          var xmlDocument = ajax.responseXML;
          /* 用xml的解析方式拿到城市根据标签名称 */
          var cityArray = xmlDocument.getElementsByTagName("cityOption");
          for (var i = 0; i < cityArray.length; i++){
            /* 用xml的解析方式拿到城市的值 */
            var city = cityArray[i].firstChild.nodeValue;
            var option = document.createElement("option");
            option.innerHTML = city;
            cityElement.appendChild(option);
          }
        }
      }
    }

     </script>
 </body>
</html>

SelectServlet.java

package com.newtouch.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SelectServlet
 */
@WebServlet("/SelectServlet")
public class SelectServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  /**
   * @see HttpServlet#HttpServlet()
   */
  public SelectServlet() {
    super();
    // TODO Auto-generated constructor stub
  }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
   *   response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.getWriter().append("Served at: ").append(request.getContextPath());
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
   *   response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    // 这里是text/xml是把数据放到了xml中
    response.setContentType("text/xml;charset=utf-8");
    String province = request.getParameter("province");
    response.getWriter().write("<?xml version='1.0' encoding='utf-8' ?>");
    response.getWriter().write("<root>");
    if ("江苏".equals(province)) {
      response.getWriter().write("<cityOption>1</cityOption>");
      response.getWriter().write("<cityOption>2</cityOption>");
      response.getWriter().write("<cityOption>3</cityOption>");
      response.getWriter().write("<cityOption>4</cityOption>");
    } else if ("江西".equals(province)) {
      response.getWriter().write("<cityOption>一</cityOption>");
      response.getWriter().write("<cityOption>二</cityOption>");
      response.getWriter().write("<cityOption>三</cityOption>");
      response.getWriter().write("<cityOption>四</cityOption>");
    }
    response.getWriter().write("</root>");
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 一个强健 实用的asp+ajax二级联动菜单(有演示和附源程序打包下载)

    一个强健 实用的ajax二级联动菜单(有演示和附源程序打包下载) 前些天在搞后台的时候要用到二级联动的菜单,到网上去找了半天也没找到满意的,不是这错就是那错,在选择的时候有时候不能返回.真是郁闷.     后来就看到有人用ajax写了无限级分类(牛,呵呵,本人看不懂.).就想到我那个后台不也可以用ajax试试,虽然比用javascript的慢点,但我这个实用.强健..不会出错,也不会选择某个大类后再返回无选择状态小类为空的状态.呵呵.文件目录:如图 主要代码如下:index.asp 复制代码 代

  • 落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码

    绝对原创   测试地址: http://www.mlmm.cn/mypage/?name=ceshi 测试页代码: 复制代码 代码如下: <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <title>php+ajax动态生成下拉菜单</title>  <script lang

  • Ajax实现无刷新三联动下拉框

    <HTML> <HEAD> <title>Ajax实现无刷新三联动下拉框</title> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="Jav

  • jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态

    功能:省,市,地区三级联动,采用jquery ajax 取数据绑定,页面刷新或提交后选定值能保存并保持选中状态 把以下代码放在一个单独的js文件中,在页面上引用即可调用 复制代码 代码如下: //获取cookie值function readCookie(name) {    var cookieValue = "";    var search = name + "=";    if (document.cookie.length > 0) {       

  • ajax读取数据库内容实现二级联动下拉选择菜单示例

    复制代码 代码如下: <PRE class=javascript name="code"></PRE><PRE class=javascript name="code">---------------------这是ajax(javascript)代码---------------------------</PRE><PRE class=javascript name="code">&l

  • Ajax二级联动菜单实现原理及代码

    index.jsp: 复制代码 代码如下: <%@ page language="java" pageEncoding="UTF-8"%> <html> <head> <title>二级菜单联动演示</title> <script type="text/javascript"> var req; window.onload=function() {//页面加载时的函数 } f

  • JavaScript Ajax Json实现上下级下拉框联动效果实例代码

    最近尝试做出一个部门和人员的下拉框联动功能,部门和人员的对应关系是1:N 复制代码 代码如下: <div class="forntName">部门</div> <div class="inpBox"> <select  name="department" id="department"  onchange="change();" style="width:

  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计.分类表叫cate. 我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id. 数据库有内容后,就可以开始写代码,进行二级联动的实现. 先在后台php获取所有pid为0的数据,保存到$cate中,然后在第一层的<select>中用foreach循环输出. Html代码: 复制代码 代码如下: <select name="type" s

  • PHP+Mysql+Ajax+JS实现省市区三级联动

    基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省.市.区获取方法类似,PHP中通过参数不同执行不同的select语句. index.html代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xh

  • asp.net省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例

    本文主要列举了省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例.前段时间需要作一个的Web前端应用,需要用多个框架,一个典型的应用场景是省市三级联动,基于此应用,特将三种主要的ajax框架略作整理,方便有需要的朋友查阅. 在示例之前,我们先设置一个演示数据源,新建一个项目,项目结构如图: 主要文件如下:AreaModel.cs: 复制代码 代码如下: using System; using System.Collections.Generi

随机推荐