上一篇联动一种只是城市用ajax请求获取并渲染,这里将省份也用ajax请求并渲染

1、HTML
<select id="province"> <option>请选择</option> </select> <select id="city"> <option>请选择</option> </select>
2、JS
/*
* 省份信息和城市信息全部来源于服务器端
* * 第一种思路 - 基于前一个案例
* * 获取省份信息,使用一次Ajax的异步请求
* * 根据省份信息,再次使用Ajax的异步请求
* * 第二种思路 - 重新思考
* * 一次性将省份和城市获取
*/
// a. 创建XMLHttpRequest对象
var xhr = getXhr();
// 第一种思路 - 基于前一个案例
// 1. 当页面加载时,实现Ajax的异步请求 - 省份信息
window.onload = function(){
// b. 建立连接 - open("get","07_province.php");
xhr.open("get","07_province.php");
// c. 发送请求 - send(null)
xhr.send(null);
// d. 接收服务器端的数据
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
var data = xhr.responseText;
// 将字符串转换为数组
var provinces = data.split(",");
// 遍历数组
for(var i=0;i<provinces.length;i++){
// 创建option元素添加到id为province元素上
var option = document.createElement("option");
var text = document.createTextNode(provinces[i]);
option.appendChild(text);
var province = document.getElementById("province");
province.appendChild(option);
}
}
}
};
// 2. 当用户选择省份信息时,实现Ajax的异步请求 - 城市信息
var province = document.getElementById("province");
province.onchange = function(){
// 清空
var city = document.getElementById("city");
var opts = city.getElementsByTagName("option");
for(var z=opts.length-1;z>0;z--){
city.removeChild(opts[z]);
}
if(province.value != "请选择"){
xhr.open("post","07_cities.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("province="+province.value);
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
var data = xhr.responseText;
var cities = data.split(",");
for(var i=0;i<cities.length;i++){
var option = document.createElement("option");
var text = document.createTextNode(cities[i]);
option.appendChild(text);
city.appendChild(option);
}
}
}
}
};
//定义获取Ajax核心对象的函数
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
return xhr;
}
3、province.php
<?php echo '山东省,辽宁省,吉林省'; ?>
cities.pnp
<?php
// 用于处理客户端请求二级联动的数据
// 1. 接收客户端发送的省份信息
$province = $_POST['province'];
// 2. 判断当前的省份信息,提供不同的城市信息
switch ($province){
case '山东省':
echo '青岛市,济南市,威海市,日照市,德州市';
break;
case '辽宁省':
echo '沈阳市,大连市,铁岭市,丹东市,锦州市';
break;
case '吉林省':
echo '长春市,松原市,吉林市,通化市,四平市';
break;
}
// 服务器端响应的是字符串
?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Ajax
# 二级联动
# Ajax结合php实现二级联动
# Spring MVC中Ajax实现二级联动的简单实例
# jQuery+JSON实现AJAX二级联动实例分析
# AJAX解析XML实例之下拉框省、市二级联动
# ajax读取数据库内容实现二级联动下拉选择菜单示例
# Ajax二级联动菜单实现原理及代码
# asp.net下使用AjaxPro实现二级联动代码
# 基于asp+ajax和数据库驱动的二级联动菜单
# 一个强健 实用的asp+ajax二级联动菜单(有演示和附源程序打包下载)
# 请选择
# 吉林省
# 辽宁省
# 山东省
# 松原市
# 通化市
# 铁岭市
# 日照市
# 德州市
# 锦州市
# 丹东市
# 第一种
# 威海市
# 吉林市
# 长春市
# 的是
# 大连市
# 客户端
# 沈阳市
# 济南市
相关文章:
如何用y主机助手快速搭建网站?
如何选择适配移动端的WAP自助建站平台?
如何批量查询域名的建站时间记录?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
javascript中的try catch异常捕获机制用法分析
建站之星安装需要哪些步骤及注意事项?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Thinkphp 中 distinct 的用法解析
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何做静态网页,sublimetext3.0制作静态网页?
如何制作网站标识牌,动态网站如何制作(教程)?
建站主机是什么?如何选择适合的建站主机?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
动图在线制作网站有哪些,滑动动图图集怎么做?
香港服务器租用每月最低只需15元?
设计网站制作公司有哪些,制作网页教程?
建站之星价格显示格式升级,你的预算足够吗?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何通过商城自助建站源码实现零基础高效建站?
内网网站制作软件,内网的网站如何发布到外网?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何选择CMS系统实现快速建站与SEO优化?
如何选择域名并搭建高效网站?
活动邀请函制作网站有哪些,活动邀请函文案?
高防服务器租用首荐平台,企业级优惠套餐快速部署
已有域名和空间,如何快速搭建网站?
如何通过网站建站时间优化SEO与用户体验?
如何用IIS7快速搭建并优化网站站点?
如何零基础在云服务器搭建WordPress站点?
高端云建站费用究竟需要多少预算?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
制作网站的软件免费下载,免费制作app哪个平台好?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
英语简历制作免费网站推荐,如何将简历翻译成英文?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何生成腾讯云建站专用兑换码?
,南京靠谱的征婚网站?
学校建站服务器如何选型才能满足性能需求?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何选择最佳自助建站系统?快速指南解析优劣
黑客如何利用漏洞与弱口令入侵网站服务器?
如何用免费手机建站系统零基础打造专业网站?
如何在阿里云购买域名并搭建网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何在搬瓦工VPS快速搭建网站?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
制作网站的模板软件,网站怎么建设?
建站之星如何快速生成多端适配网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。