Ajax实现的城市二级联动二
上一篇联动一种只是城市用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实现的城市二级联动一
前一篇是把省份和城市都写在JS里,这里把城市放在PHP里,通过发送Ajax请求城市数据渲染到页面. 1.html <select id="province"> < ...
- Ajax实现的城市二级联动三
把之前2篇整合在一起 1.html <select id="province"> <option>请选择</option> </selec ...
- jq简单城市二级联动实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js实现城市二级联动列表
这个是一个同事写的,我看着有用,就cv下来了. 程序功能主要逻辑是: 1.当一级标签市显示默认状态 '-请选择-'时,二级标签要隐藏 2.一级标签选中城市时,二级标签显示在页面,并列出响应市区 3.当 ...
- 使用jquery.ajax实现省市的二级联动(SSH架构)
首先实现jquery ajax的二级联动 要下载个jquery.js 我在这里就不准备了 自行百度下载 背景介绍:通过部门的ID来查找部门下的所有班级 我实现二级联动的思路是:先查询所有部门 显示在页 ...
- asp.net mvc jQuery 城市二级联动
页面效果图: 数据库表结构: 首先在数据库中创建省级.城市的表,我的表如下:我用了一张表放下了省级.城市的数据,用level划分省份和城市,parentId表示该城市所在省份的id 主要文件有:ind ...
- 最新城市二级联动json(2017-09)
{ '安徽': [ '合肥', '芜湖', '蚌埠', '淮南', '马鞍山', '淮北', '铜陵', '安庆', '黄山', '阜阳', '宿州', '滁州', '六安', '宣城', '池州', ...
- DOM之城市二级联动
1.HTML内容 <select id="province"> <option>请选择</option> <option>山东省&l ...
- Mybatis + js 实现下拉列表二级联动
Mybatis + js 实现下拉列表二级联动 学习内容: 一.业务需求 二.实现效果 三.代码实现 1. province_city.jsp 2. TwoController 2. Province ...
随机推荐
- 三.mysql表的完整性约束
mysql表的完整性约束 什么是约束 not null 不能为空的 unique 唯一 = 不能重复 primary key 主键 = 不能为空 且 不能重复 foreign key ...
- Git学习篇之git remote add origin错误
提示出错信息:fatal: remote origin already exists. 解决办法如下: 1.先输入$ git remote rm origin 2.再输入$ git remote ad ...
- 数组-Array
1.数组的概念 /* 数组的格式 数组: 同一种数据类型的若干个值的容器 元素:数组中的值称为元素 索引:元素的标号,从0开始 长度:数组中元素的个数 */ public class ArrayDem ...
- 还原Azure DevOps Server (TFS)中误删除的生成流水线
流水线历史记录 DevOps Server流水线的历史记录有完善的版本日志,用户可以随时回退到修改过程中的任何一个版本,还能比较差异.这个历史记录功能可以和代码库中的版本控制媲美. 图一:生成历史记录 ...
- 小试 boost spirit
解释文本文件是日常编程中太平常的一件事情了,一般来说,土鳖点的做法可以直接手写 parser 用循环暴力地去 map 文本上的关键字从而提取相关信息,想省力一点则可以使用 tokenizer 或正则表 ...
- 在windows如何操控一些屌炸天的linux命令[利刃篇]
作为开发者,也许你会说,不会linux简直弱爆了.是的,但是,倒底有多少人是真正在用linux进行开发工作呢,也许是我孤陋寡闻,但我相信,windows操作很多东西是真方便,不愿意使用linux直接开 ...
- Linux - 基础命令汇总
珠玉在前,不再赘言. 60个命令 对Linux新手非常有用的20个命令 对中级Linux用户非常有用的20个命令 对Linux专家非常有用的20个命令 一些技巧 最实用的 Linux 命令行使用技巧 ...
- vue 组件发布记录
好久没做独立的 vue 组件了,最近突然想把一个常用的 vue 组件打成一个 npm 包,方便使用.好久不用,发现已经忘记环境怎么搭建.翻看以前的组件,才慢慢回想起来,中间还出现些错误.在这记录下开发 ...
- oracle中常见的对表、表空间和视图的操作
创建表:create table t1(key1 type default 0,key2 type not null) 删除表:drop table t1; 删除表数据:truncate table ...
- Linux学习笔记之四————Linux常用命令之文件管理
Linux命令——文件管理相关命令 <1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或 ...