基本思路:前台的下拉框值改变时,AJAX将值传入后台的servlet进行处理,根据不同的值返回不同的JSON数据,然后前台进行解析成字符数组,添加到option中.
index.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%>">
<title>My JSP 'index.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
var xmlHttpRequest;
function createXmlHttpRequest() {
if (window.XMLHttpRequest) {
xmlHttpRequest = new XMLHttpRequest();
} else {
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function getCity(value) {
createXmlHttpRequest();
xmlHttpRequest.open("POST", "cityAction?value="+value,true); //将value传递到后台的servlet
xmlHttpRequest.onreadystatechange = showMsgCallback;
xmlHttpRequest.send(null);
}
function showMsgCallback() {
if (xmlHttpRequest.readyState == 4) {
if (xmlHttpRequest.status == 200) {
var str = eval("("+xmlHttpRequest.responseText+")"); //JSON格式转换为字符数组
if(str!=null&&str!=""){
document.getElementById("city").options.length=0; //将原有的选项清空
document.getElementById("city").options.add(new Option("--选择"));
for(var i=0;i<str.length;i++){ //遍历数组
var option = document.createElement("option"); //创建一个 option
option.text = str[i]; //设置显示的值
option.value = str[i]; //设置value属性值
document.getElementById("city").options.add(option); //将新建的option添加到select中
}
}else{
document.getElementById("city").options.length=0;
document.getElementById("city").options.add(new Option("--选择"));
}
}
}
}
</script>
</head>
<body>
省:
<select onchange="getCity(this.value)">
<option>
--选择
</option>
<option value="北京">
北京
</option>
<option value="深圳">
深圳
</option>
<option value="河南">
河南
</option>
</select>
城市:
<select id="city">
<option>
--选择
</option>
</select>
</body>
</html>
Servlet: CityAction.java
package com.org;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CityAction extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String province = request.getParameter("value");
StringBuffer buf = new StringBuffer("[");
//数据只是测试 通常是从数据库中取出数据
if("北京".equals(province)){
buf.append("\"").append("海淀").append("\"").append(",");
buf.append("\"").append("朝阳").append("\"").append(",");
buf.append("\"").append("昌平").append("\"").append(",");
buf.append("\"").append("大兴").append("\"");
buf.append("]");
out.print(buf);
System.out.println(buf);
}else if("深圳".equals(province)){
buf.append("\"").append("福田").append("\"").append(",");
buf.append("\"").append("罗湖").append("\"").append(",");
buf.append("\"").append("南山").append("\"").append(",");
buf.append("\"").append("盐田").append("\"");
buf.append("]");
out.print(buf);
System.out.println(buf);
}else if("河南".equals(province)){
buf.append("\"").append("郑州").append("\"").append(",");
buf.append("\"").append("新乡").append("\"").append(",");
buf.append("\"").append("洛阳").append("\"").append(",");
buf.append("\"").append("商丘").append("\"");
buf.append("]");
out.print(buf);
System.out.println(buf);
}else{
out.print("[\"\"]");
}
System.out.println(province+"******");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
分享到:
相关推荐
该资源包含了一个使用jquery ajax实现的省市二级联动的简单demo,简单易懂,可以参考博客:http://blog.csdn.net/mockingbirds/article/details/46842327
在S2SM的框架下,使用Ajax完成的省市二级联动,使用Jquery完成的Ajax,使用JSON,JSONArray完成,在eclipse下即可运行 一直在找类似的资源找不着,干脆自己写一个和大家分享
ajax初级入门。 无刷新实现省市2级菜单联动。 代码简单,很容易明白。
JavaWeb通过ajax、json实现省市二级联动:客户端通过jsp页面,来访问服务器的servlet,服务器访问数据库,返回json数据给客户端
Ajax省市二级联动,保证能用,SQL脚本在项目中。。。欢迎学习,共同进步
php+ajax 二级联动 无刷新实现省市县联动。
利用ajax无刷新省市二级联动 直接可以使用啊啊
包括两个资源:通过JS实现的二级省市联动、AJAX实现的省市县三级联动
Struts2+jQuery+ajax+mySql实现省市二级联动
使用Ajax Json实现省市二级联动使用Ajax Json实现省市二级联动
jqueyry + ajax +mysql 实现省市二级联动,实现省市的二级联动,从数据库中动态的获取数据,省市实现动态的变化,为保存省市的数据实现从后台获取。
ASP.NET AJAX 省市县三级联动
本文实例为大家分享了Ajax实现城市二级联动的具体代码,供大家参考,具体内容如下 这是Ajax实现城市二级联动系列文章第三篇,把之前2篇整合在一起 1、html <select id="province"> 请选择 </select> ...
js省市2级联动.rar 很简单的js js省市2级联动,非ajax版,和ajax效果一样
纯净SSM简单整合,数据库资源根据实体类自己创建。内有ssm增删改查,ajax结合jquery做下拉框,省市联动,多选框等。所有jar包都放在lib里,搭好数据库完美可用。供新手学习。
下面我们用Jquery,ajax,做一个省,市,县的三级联动: 下面是我做三级联动下拉的步骤以及逻辑 第一步:先做一个省市区表格 第二步:建个PHP页面显示用我是在<body>里放用来接收要显示的省市区表格信息,里面...
摘要:.NET源码,Ajax相关,DropDownList,二级联动 ASP.NET中的二级联动Select示例代码,页面使用ashx,js实现联动,并可以获取DropDownList的值。 1.Cascading DropDownList 使用场景 省市联动 部门人员...
希望对您有帮助, 还有联动系列代码: ajax_二级联动2个表 ASPJs sqlserver四级级联及无限级级联 ASP三级联动1个表 二级联动无数据库_vbscript 蓝木省市县三级联动菜单 文本数据库
在开发中遇到的二种不同的省市县联动方式: 1.第一种纯js的方式 2.第二种用ajax查询数据库的到省市县的id的方式,里面有代码以及sql表