省市二级联动小案例讲解


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 相关文章推荐
JS中showModalDialog 的使用解析
Apr 17 Javascript
Jquery 模板数据绑定插件的使用方法详解
Jul 08 Javascript
js函数获取html中className所在的内容并去除标签
Sep 08 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
js实现仿阿里巴巴城市选择框效果实例
Jun 24 Javascript
AngularJS控制器详解及示例代码
Aug 16 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
May 06 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
基于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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
如何开发一个虚拟域名系统
2006/10/09 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
在JS中如何调用JSP中的变量
2014/01/22 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
numpy实现RNN原理实现
2021/03/02 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
现金会计岗位职责
2013/12/05 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
《太阳》教学反思
2014/02/21 职场文书
美术指导求职信
2014/03/17 职场文书
合同协议书格式
2014/04/18 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
初三数学教学反思
2016/02/17 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL