AJAX省市县三级联动
效果

开发结构参考AJAX,JSON用户校验
主要有两个核心文件
1,处理输入字符,进行后台搜索的servlet
linkage.java
package org.guangsoft.servlet; import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.guangsoft.bean.Address;
import org.guangsoft.dao.SqlHelper; import com.google.gson.Gson; public class Linkage extends HttpServlet
{ public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
} protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
String provinceNo = request.getParameter("provinceNo");
String cityNo = request.getParameter("cityNo");
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet resultSet = null;
try
{
String sql = "";
connection = SqlHelper.getConnection();
if(cityNo != null && cityNo != "")
{
sql = "select code,name from area where citycode = ?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1,cityNo);
}
else if(provinceNo != null && provinceNo != "")
{
sql = "select code,name from city where provincecode = ?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1,provinceNo);
}
else
{
sql = "select code,name from province";
prepareStatement = connection.prepareStatement(sql);
} resultSet = prepareStatement.executeQuery();
List<Address> addrList = new ArrayList<Address>();
while(resultSet.next())
{
Address address = new Address();
address.setAreaNo(resultSet.getString("code"));
address.setAreaName(resultSet.getString("name"));
addrList.add(address);
}
Gson gson = new Gson();
response.getWriter().print(gson.toJson(addrList));
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
SqlHelper.close(connection, prepareStatement, resultSet);
}
} }
2,展示前台
linkage.jsp
<%@ page language="java" import="java.util.*" 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>
<base href="<%=basePath%>">
<script src="/ajax/js/AjaxUtil.js"></script>
<script>
function getProvince()
{
sendAjaxReq("get","linkage",null,function(data)
{
eval("var addrList="+data);
var province = document.getElementById("province");
for(var i = 0; i < addrList.length; i++)
{
var address = addrList[i];
province.innerHTML += "<option value="+address.areaNo+">"+address.areaName+"</option>";
}
});
}
function getCity(provinceNo)
{
sendAjaxReq("get","/ajax/linkage?provinceNo="+provinceNo,null,function(data)
{
eval("var addrList="+data);
var city = document.getElementById("city");
city.innerHTML="<option value='0'>---请选择---</option>";
for(var i = 0; i < addrList.length; i++)
{
var address = addrList[i];
city.innerHTML += "<option value="+address.areaNo+">"+address.areaName+"</option>";
}
});
}
function getArea(cityNo)
{
sendAjaxReq("get","/ajax/linkage?cityNo="+cityNo,null,function(data)
{
eval("var addrList="+data);
var area = document.getElementById("area");
area.innerHTML="<option value='0'>---请选择---</option>";
for(var i = 0; i < addrList.length; i++)
{
var address = addrList[i];
area.innerHTML += "<option value="+address.areaNo+">"+address.areaName+"</option>";
}
});
}
</script>
</head> <body onload="getProvince();">
省:<select id="province" onchange="getCity(this.value);">
<option value="0">---请选择---</option>
</select>
市:<select id="city" onchange="getArea(this.value);">
<option value="0">---请选择---</option>
</select>
区:<select id="area">
<option value="0">---请选择---</option>
</select>
</body>
</html>
开发截图

AJAX省市县三级联动的更多相关文章
- AJAX省市县三级联动的实现
省市县数据 本例子中省市县数据保存在MySQL数据库中,部分数据截图如下: 从数据库中读取数据 导入需要的jar包 连接池配置文件 <c3p0-config> <!-- 默认配置,如 ...
- jquery+php+mysql实现Ajax省市县三级联动
1.第一步建立一个html页面的,放置省.市.县三个select选择框,代码如下: <!DOCTYPE html> <html> <head> <title& ...
- php仿经典省市县三级联动
之前有个需求要写个类似省市县三级联动的页面,于是,网上找了点资料看了下,其实原理很简单: 当我们选择一级栏目中某条记录的时候,会获取该栏目的vaule值,并发起ajax请求,后台根据这个vaule值, ...
- 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框
JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP mysql数据库 SpringMvc ajax Controller层 Service层 中国地区 省 ...
- jQuery - 全国省市县三级联动
最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...
- wex5 实战 省市县三级联动与地址薄同步
无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2: 地址薄选项,利用inputSel ...
- 省市县三级联动 sql语句
发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...
- Android 省市县 三级联动(android-wheel的使用)[转]
转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为 ...
- Android 省市县 三级联动(android-wheel的使用)
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...
随机推荐
- BZOJ-1934 Vote 善意的投票 最大流+建图
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1551 Solved: 951 [Submit][S ...
- myEclipse中新建的项目导入到Eclipse之后项目出现一个红色的叉叉
1.在eclipse中打开Problems,然后看看报哪些错,
- Linux System Reinforcement、Intrusion Detection Based On syslog
目录 .文件系统及访问权限 . Linux Syslog . Linux日志审计 . 帐号安全管理 . 基础物理安全 . 系统编译环境安全 . 系统病毒.后门.rootkit安全 . 系统端口.服务安 ...
- mint锁屏设置
心血来潮,给笔记本装了linux,版本是当下最火的mint.唔,使用体验不错-下面记录的是修改mint锁屏相关设置的修改方式. In Linux Mint 13, the screen lock fe ...
- IOS基础之 (十二) 类的扩展
对OC类的扩展总结如下,共有4个: 1.子类 subClass 作用:可以使用类的继承来增添父类的变量和方法. 写法:在.h文件中 @interface Student : Person 2.分类 C ...
- 《驾驭Core Data》 第一章 Core Data概述
<驾驭Core Data>系列教程综合了<Core Data for iOS>,<Learning Core Data for iOS>,<Core Data ...
- 学习 easyui 之一:easyloader 分析与使用
http://www.cnblogs.com/haogj/archive/2013/04/22/3036685.html 使用脚本库总要加载一大堆的样式表和脚本文件,在 easyui 中,除了可以使用 ...
- auto,register,static实例
#include <stdio.h>int main() { auto int i = 0; register int j = 0; static int k = 0; ...
- Protocol Buffer技术详解(数据编码)
Protocol Buffer技术详解(数据编码) 之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和J ...
- 终端terminal配色
切换到~/.bash_profile,无此.bash_profile文件可创建 在文件内粘入以下代码: #enables colorin the terminal bash shell export ...