省市二级联动小案例讲解


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动画效果代码
Jul 20 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
分析了一下JQuery中的extend方法实现原理
Feb 27 Javascript
手机端页面rem宽度自适应脚本
May 20 Javascript
整理AngularJS中的一些常用指令
Jun 16 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
Apr 17 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
Javascript实现简易天数计算器
May 18 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
JS实现php的伪分页
2008/05/25 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python基础知识点 初识Python.md
2019/05/14 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
擅自离岗检讨书
2014/02/11 职场文书
2014年国庆标语
2014/06/30 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
2015年小学开学寄语
2015/02/27 职场文书