省市二级联动小案例讲解


Posted in Javascript onJuly 24, 2016

在网页开发过程中,选择省市的时候,省市之间有关联,这是一个小小的二级联动案例 ,运用到HTML、css、php、js以及

AJAX的异步请求

首先建立city.php和province.php文件和connet.html,将二级联动的大概结构写出来,html代码如下:

<label>省份:</label>
<select id="province">
<option>请选择</option>
</select>
<label>城市:</label>
<select id="city">

<option>请选择</option>
</select>

js代码以及ajax请求如下:

<script>
// 通过Ajax从服务器端获取数据
var provinceElement = document.getElementById("province");
window.onload = function(){
// 创建核心对象
var xhr = getXhr();
// 监听

xhr.onreadystatechange = function(){

if(xhr.readyState == 4 && xhr.status == 200){
//吉林省,辽宁省,山东省

var data = xhr.responseText;
// 处理数据

var arr = data.split(',');

for(var i=0;i<arr.length;i++){
// <option>请选择</option>

var opt = document.createElement("option");

var text = document.createTextNode(arr[i]);

opt.appendChild(text);

provinceElement.appendChild(opt);
}
}
}
// 建立连接

xhr.open("get","province.php");
// 发送数据

xhr.send(null);
}
// 2. 用户选择不同的省份
provinceElement.onchange = function(){
// a. 清除城市列表
var cityElement = document.getElementById("city");
var opts = cityElement.getElementsByTagName("option");
for(var i=1;i<opts.length;i++){
cityElement.removeChild(opts[i]);
i--;
}
// b. 得到用户选择的值(省份)
var provinceValue = this.value;

if(provinceValue == "请选择"){

return false;
}
// c. 通过Ajax根据省份获取城市
var xhr = getXhr();
xhr.open("post","city.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("province="+provinceValue);
xhr.onreadystatechange = function(){

if(xhr.readyState == 4 && xhr.status == 200){

var data = xhr.responseText;

var arr = data.split(",");

for(var i=0;i<arr.length;i++){
// <option>城市</option>

var opt = document.createElement("option");

var text = document.createTextNode(arr[i]);

opt.appendChild(text);

cityElement.appendChild(opt);
}
}
}
}
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
return xhr;
}
</script>
province.php代码如下:
<?php
// 将省份信息进行响应
echo '吉林省,辽宁省,山东省';
?>

city.php代码如下:

<?php
// 1. 接收客户端的请求数据
$province = $_POST['province'];
// 2. 根据省份的不同,提供不同的城市
switch ($province){
case '吉林省':
echo '长春市,松原市,白山市,通化市,辽源市';
break;
case '辽宁省':
echo '沈阳市,大连市,锦州市,铁岭市,丹东市';
break;
case '山东省':
echo '济南市,青岛市,威海市,日照市,德州市';
break;
}

最终的界面图如下:

省市二级联动小案例讲解

以上所述是小编给大家介绍的省市二级联动小案例,希望对大家有所帮助,如果大家想了解更多内容,敬请关注三水点靠木!

Javascript 相关文章推荐
JavaScript 对Cookie 操作的封装小结
Dec 31 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
Javascript中的String对象详谈
Mar 03 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
Mar 30 Javascript
jquery遍历标签中自定义的属性方法
Sep 17 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
原生js实现省市区三级联动代码分享
Feb 12 Javascript
vue.js使用3DES加密的方法示例
May 18 Javascript
关于vue项目中搜索节流的实现代码
Sep 17 Javascript
微信小程序实现同时上传多张图片
Feb 03 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
Jul 24 #Javascript
js简单实现调整网页字体大小的方法
Jul 23 #Javascript
jquery实现ajax加载超时提示的方法
Jul 23 #Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 #Javascript
js的各种排序算法实现(总结)
Jul 23 #Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 #Javascript
javaScript事件机制兼容【详细整理】
Jul 23 #Javascript
You might like
第1次亲密接触PHP5(2)
2006/10/09 PHP
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
PHP如何将XML转成数组
2016/04/04 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
Vue异步加载about组件
2017/10/31 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
对python 调用类属性的方法详解
2019/07/02 Python
python 同时读取多个文件的例子
2019/07/16 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
超市促销活动方案
2014/03/05 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
详解Redis集群搭建的三种方式
2021/05/31 Redis
利用js实现简单开关灯代码
2021/11/23 Javascript
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android