JSP页面

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax无刷新三级联动</title> <%
MemberDal md = new MemberDal(); //实例化封装的数据库操作类 ArrayList<Member> al1 = md.getMember(0); //获取第一级地区数据 %> <script type="application/javascript" src="jquery/jquery-1.11.3.js"></script> <script type="text/javascript"> function yijChangeJson()
{ //Jquery Ajax get方法异步请求调用数据 URL(第一级地区ID参数) + 回调函数
$.get("jsonMembers?parentid=" + $("#yij").val() + "&nocache=" + new Date().getTime(),
function(data,status){ //解析JSON 获取数组
var array = eval(data); var erj = document.getElementById("erj");
//清空下拉列表
erj.options.length = 1;
//遍历数据
for(var i = 0; i < array.length; i++)
{
//更改option标签内容和value
erj.options.add(new Option(array[i].name, array[i].id));
}
//清空第三级下拉列表
var sanj = document.getElementById("sanj");
sanj.options.length = 1;
})
} function erjChangeJson()
{ //Jquery Ajax get方法异步请求调用数据 URL(第二级地区ID参数) + 回调函数
$.get("jsonMembers?parentid=" + $("#erj").val() + "&nocache=" + new Date().getTime(),
function(data,status){ //解析JSON 获取数组
var array = eval(data); var sanj = document.getElementById("sanj");
//清空下拉列表
sanj.options.length = 1;
//遍历数据
for(var i = 0; i < array.length; i++)
{
//更改option标签内容和value
sanj.options.add(new Option(array[i].name, array[i].id));
}
})
} </script> </head>
<body> <form>
一级地区:
<select id="yij" name="yij" onchange="yijChangeJson()">
<option value="0">未选择</option>
<%
if(al1 != null)
{
for(Member m : al1) //遍历获取第一级地区数据集合并在option标签内输出
{
out.append("<option value='"+m.getId()+"'>"+m.getName()+"</option>");
}
}
%>
</select>
二级地区:
<select id="erj" name="erj" onchange="erjChangeJson()"> <option value="0">未选择</option>
</select> 三级地区:
<select id="sanj" name="sanj" > <option value="0" selected>未选择</option> </select> </body>
</html>

servlet

package com.hanqi;

import java.io.IOException;
import java.util.ArrayList; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.hanqi.dao.Member;
import com.hanqi.dao.MemberDal; import com.alibaba.fastjson.*;//引入JSON的jar包 @WebServlet("/jsonMembers")
public class jsonMembers extends HttpServlet {
private static final long serialVersionUID = 1L; public jsonMembers() {
super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8"); String parentid = request.getParameter("parentid");//接收ajax发送参数 MemberDal md = new MemberDal(); //实例化封装的数据库操作类 if(parentid != null && parentid.trim().length() > 0)
{
int i = Integer.parseInt(parentid);//数据类型转换 String s = ""; try
{
ArrayList<Member> al = md.getMember(i); //根据参数查询数据获取集合 if(al != null)
{
s = JSON.toJSONString(al); //将集合以字符串形式存入JSON
}
}
catch (Exception e)
{
e.printStackTrace();
}
response.getWriter().append(s);//把JSON数据发送给JSP
}
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

JAVA EE 中之AJAX 无刷新地区下拉列表三级联动的更多相关文章

  1. Ajax省市地区下拉列表三级联动

    SQL数据库表 --创建Province表 CREATE TABLE [dbo].[Province]( [Id] [int] NULL, [Name] [varchar](50) NULL, [or ...

  2. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  3. ajax无刷新获取天气信息

    浏览器由于安全方面的问题,禁止ajax跨域请求其他网站的数据,但是可以再本地的服务器上获取其他服务器的信息,在通过ajax请求本地服务来实现: <?php header("conten ...

  4. Ajax.BeginForm()实现ajax无刷新提交

    1. 同时安装 Microsoft jQuery Unobtrusive ajax 和 jQuery Unobtrusive Ajax,如下图 安装完成之后多了如下的js库 2. 引用该js库 lay ...

  5. 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传

    现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...

  6. thinkphp ajax 无刷新分页效果的实现

    思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...

  7. DWZ框架Ajax无刷新表单提交处理流程

    DWZ框架Ajax无刷新表单提交处理流程是: 1.       ajax表单提交给服务器 2.       服务器返回一个固定格式json结构 3.       js会调函数根据这个json数据做相应 ...

  8. Thinkphp框架 -- ajax无刷新上传图片

    用Thinkphp框架做无刷新上传图片 视图层 View <!doctype html> <html lang="en"> <head> < ...

  9. ajax无刷新方式收集表单并提交表单

    ajax无刷新方式收集表单有两种方式, 一个是使用html5的FormData.一个是传统的方式. 一,FormData,在主流的浏览器中可以用,IE不好用啊. 另外,FormData使用有两个条件, ...

随机推荐

  1. HTTP和HTTPS详解。

    一,HTTP和HTTPS基本概念 深入学习某个东西时,我们先来从维基百科上看看它俩的概念. HTTP:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一 ...

  2. ARM中断向量表与响应流程【转】

    转自:http://blog.csdn.net/honour2sword/article/details/40213417 一首先中断向量表定义在哪里?如何加载? 二 中断向量表与中断服务程序 三处理 ...

  3. 【jzoj2017.8.21提高组A】

    太菜了,刷刷NOIP题玩玩. 今天的题好像以前有做过(雾) A. #include<bits/stdc++.h> typedef long long ll; ],cnt; ll x; in ...

  4. 【bzoj4486】【JSOI2015】串分割

    老省选题了. 首先考虑怎么比较超长数字的大小? 参见UTR1的那道题 先比size,然后比较字典序即可. 接下来考虑下切割的问题. 因为要将字符串切割成k份,所以这个字符串只会存在n/k个本质不同的起 ...

  5. Mac下使用brew搭建PHP7+nginx+mysql开发环境

    http://blog.csdn.net/mysteryhaohao/article/details/52230634 HomeBrew brew的安装,直接上官网:http://brew.sh/ 一 ...

  6. mycncart自定义主题

    本文是自己通过其他主题,自学的,如果有什么问题,可以提出建议? 参考资料:opencart官网 www.opencart.com  或 mycncart的官网上的一些教程 www.mycncart.c ...

  7. JWT认证不通过导致不能访问视图的解决方案

    在做商城项目的购物车模块时,发现了一个问题. 需求:当用户登录时,添加商品到购物车的数据保存在redis.当用户未登录时,添加商品到购物车的数据保存在cookies.两个功能都写在一个视图里面.以JW ...

  8. Proxy那点事儿

    全文转载,原文地址:Proxy 那点事儿 Proxy,也就是"代理"了.意思就是,你不用去做,别人代替你去处理.比如说:赚钱方面,我就是我老婆的 Proxy:带小孩方面,我老婆就是 ...

  9. 使用Guava retryer优雅的实现接口重调机制

    API 接口调用异常, 网络异常在我们日常开发中经常会遇到,这种情况下我们需要先重试几次调用才能将其标识为错误并在确认错误之后发送异常提醒.guava-retry可以灵活的实现这一功能.Guava r ...

  10. 《java并发编程实战》读书笔记9--并发程序的测试

    第12章 并发程序的测试 大致分为两类:安全性测试和活跃性测试 12.1 正确性测试 找出需要检查的不变性条件和后验条件.接下来将构建一组测试用例来测试一个有界缓存.程序清单12-1给出了Bounde ...