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 ...
随机推荐
- 23.HashMap
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...
- delphi如何在form显示出来后处理指定的事件(例如自动登录)
最近写一个delphi客户端,遇到一个自动登录问题,已经解决了思路如下: 1.在Form的oncreate事件中读取用户配置文件,检查及处理是否保存了用户密码,是否自动登录,如果需要自动登录, 自动登 ...
- WPF常用样式总结
常用控件样式: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation ...
- 使用netstat命令查看端口的使用情况
Windows如何查看端口占用情况操作步骤如下: 开始--运行--cmd 进入命令提示符,输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管 ...
- 代码的重构(Refactor-Extract)
1.vs中的代码重构快捷方式:Refactor-Extract: 选中两个需要重构的部分完整代码,右击,选中Refactoe-Extract-Extract Method: 该选中的代码会自动形成一个 ...
- Redis最新面试题26题(初级、中级Redis面试题)
Redis 1级(入门基础) 1.Redis有哪些数据类型? string,list,set,sorted set(Zset),hash 2.集合和列表有什么区别? 列表是可以从两端推入.推出数据的队 ...
- JavaScript中原型链的那些事
引言 在面向对象的语言中继承是非常重要的概念,许多面向对象语言都支持两种继承方式:接口继承和实现继承.接口继承制只继承方法签名,而实现继承继承实际的方法.在ECMAScript中函数没有签名,所以EC ...
- web自动化测试(java)---元素定位
和python类似,java-selenium也提供了很多种元素定位的方法,具体如下: findElement(By.id()) findElement(By.name()) findElement( ...
- python-UiAutomator学习&使用
一.安装 源码地址: https://github.com/xiaocong/uiautomator#basic-api-usages ①下载zip包,解压到本地目录下 ②进入对应目录下,执行 $su ...
- ZolltyMVC配置-说明文档
目前XML里支持的一级元素如下: <!-- 配置 --> <xsd:element ref="mvc"/> <xsd:element ...