1.三级地址联动思路如下:

2.建立数据库。这里直接使用网上的地址数库,最后一个字段无用,先不去管它

3.建立一个server.php 文件

 <?php
// 数据库连接
mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("ajax_demo");
mysql_query("set names utf8");
// 声明一个数组
$list = array();
// 对省级区域的请求作出反馈
if(isset($_REQUEST['province_id'])){
$sql = 'select * from ecs_region where parent_id='.$_REQUEST['province_id'];
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($res)){
array_push($list,$row);
};
// 把数组转化成json 格式文件
echo json_encode($list);
// 对城市级区域的请求作出反馈
}else if(isset($_REQUEST['city_id'])){
$sql = 'select * from ecs_region where parent_id='.$_REQUEST['city_id'];
$res = mysql_query( $sql );
while($row=mysql_fetch_assoc($res)){
array_push($list,$row);
}
// 把数组转化成json 格式文件
echo json_encode($list);
};
?>

4. 建立一个请求文件:dizhi_argument.php

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
window.onload= function(){
// 编写获取城市地址的函数:getcity();
function getcity(Id){
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var url = 'server.php?province_id='+Id+'&tt='+ Math.random();
xhr.open('GET',url,true);
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
var obj = JSON.parse(xhr.responseText);
var city = '';
var Octiy = document.querySelector('#city');
city += "<option value='0'>请选中城市</option>";
for(var i in obj){
city +="<option value='" + obj[i].region_id + "'>" + obj[i].region_name + "</option>";
}
Octiy.innerHTML = city;
}
}
xhr.send(null);
}
// 编写获取区县地址的函数:getDistrict();
function getDistrict(Id){
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var url = "server.php?city_id="+Id+"&tt="+ Math.random(); xhr.open('GET',url,true);
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
var obj = JSON.parse(xhr.responseText);
var district = '';
var Odistrict = document.querySelector("#district");
district = "<option value='0'>请选择区县</option>";
for(var i in obj){
district += "<option value='" + obj[i].region_id + "'>" + obj[i].region_name + "</option>";
}
Odistrict.innerHTML = district ;
}
}
xhr.send(null);
}
// 获取城市地址的元素
var Ocity = document.querySelector('#city');
// 对城市地址进行监控,如果改变了,则调用获取区县的函数:getDistrict()
Ocity.onchange = function(){
getDistrict(this.value);
};
// 获取省区地址元素
var Oprovince = document.querySelector('#province');
// 对省区地址进行监控,如果有发生改变,则调用城市的函数:getcity();
Oprovince.onchange= function(){
getcity(this.value);
};
}
</script>
</head>
<body>
<?php
// 服务器连接,数据库选择,设置字符集编码
mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("ajax_demo");
mysql_query("set names utf8");
?> <select name="province" id="province">
<option value="0">请选择省区</option>
<?php
// 调用升级地址,遍历出来
$sql = "select * from ecs_region where parent_id=1" ;
$res = mysql_query($sql);
while($row=mysql_fetch_assoc($res)){ ?>
<option value="<?php echo $row['region_id'] ?>"><?php echo $row['region_name']; ?></option>
<?php
}
?>
</select>
<!-- 城市区块 -->
<select name="city" id="city">
<option value="0">请选择城市</option>
</select>
<!-- 区县区块 -->
<select name="district" id="district">
<option value="0">请选择区县</option>
</select>
</body>
</html>

5.通过地址栏访问:http://localhost/aaa/yuanli/test/dizhi_argument.php

运行结果:结果OK,达到了三级代用的效果

上面使用的是GET 方法传递参数,如果想使用POST方式,只需要把dizhi_argument.php中的

xhr.open('GET',url,true); 改为  xhr.open('POST',url,true);
xhr.send(null);  改为  xhr.send("province_id="+Id);
并在send()函数前加入:  xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

 
这样就可以了
 
 

javascript_ajax 地址三级联动的更多相关文章

  1. 中国省市区地址三级联动jQuery插件 案例下载

    中国省市区地址三级联动jQuery插件 案例下载 distpicker 是一款可以实现中国省市区地址三级联动jQuery插件.它使用简单,简单设置即可完成中国省市区地址联动效果. 安装 可以通过npm ...

  2. Vue如何使用vue-area-linkage实现地址三级联动效果

    很多时候我们需要使用地址三级联动,即省市区三级联动.网上有很多插件,在此介绍Vue的一款地区联动插件:vue-area-linkage,下面介绍如何使用这个插件实现地址联动效果:         1. ...

  3. 中国省市区地址三级联动插件---jQuery Distpicker

    插件描述:distpicker是一款可以实现中国省市区地址三级联动jQuery插件.它使用简单,简单设置即可完成中国省市区地址联动效果. [官网]https://fengyuanchen.github ...

  4. vue移动端地址三级联动组件(一)

    vue移动端地区三级联动 省,市,县.用的vue+mintUi 因为多级联动以及地区的规则比较多.正好有时间自己写了一个.有问题以及建议欢迎指出.涉及到dom移动,所以依赖vue+jquery.这边数 ...

  5. jquery_ajax 地址三级联动

    jquery 的三级地址联动,原理与javascript类似,只是在触发请求的时候,使用封装好的 $.get ,$post,$.ajax 方法去执行,其余的都是一样的,后台服务器请求文件是一样的,前台 ...

  6. 省市区地址三级联动jQuery插件Distpicker使用

    插件下载地址 http://www.jq22.com/jquery-info8054 效果如下: 使用: 1.引入js <script src="http://www.jq22.com ...

  7. vue移动端地址三级联动组件(二)

    继续上一篇: 子组件css: <style scoped lang="less"> #city { width: 100%; height: 100%; positio ...

  8. 用Vue2仿京东省市区三级联动效果

    三级联动,随着越来越多的审美,出现了很多种,好多公司都仿着淘宝的三级联动 ,好看时尚,so我们公司也一样……为了贴代码方便,我把写在data里面省市区的json独立了出来,下载贴进去即可用,链接如下 ...

  9. jquery全国省市区三级联动插件distpicker

    使用步骤: 1.引入js <script src="distpicker/jquery.min.js" type="text/javascript" ch ...

随机推荐

  1. 廖雪峰Java2面向对象编程-5包和classpath-3作用域

    1.访问权限 Java的类.接口.字段和方法都可以设置访问权限 访问权限是指在一个类的内部,能否引用另一个类以及访问它的字段和方法 访问权限有public.protected.private和pack ...

  2. Scrapy学习篇(五)之Spiders

    Spiders Spider类定义了如何爬取某个网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item).简而言之,Spider就是你定义爬取的动作及分析某个网 ...

  3. CentOS 7安装Oracle 11gR2以及设置自启动(1)

    一.环境准备 1.正确无误的CentOS 7系统环境 虚拟机要求: 内存至少2G 处理器至少2个 根分区要大于20G(安装oracle很占空间,空闲空间要足够) 2.正确的JDK环境 CentOS 7 ...

  4. Android Studio启动后出现cannot bind to 127.0.0.1:5037 10048的解决办法

    第一次:先连接测试手机,然后启动Android studio时出现下面的弹框,网上查找资料说是360手机助手导致的,但是发现没有安装360手机助手只有360,卸载360后再启动Android stud ...

  5. 0000 - Spring MVC 原理以及helloworld

    1.概述 Spring MVC是目前最好的实现MVC设计模式的框架,是Spring框架的一个分支产品.以Spring IOC容器为基础,并利用容易的特性来简化它的配置.Spring MVC相当于Spr ...

  6. 不曾忘记的Vue.js

    马上2017年就结束了,虽然我因为目前的项目用不上你vue,但是我不曾忘记你,在时间缝隙的某一刹那,我再次将你拾起. vue.js全家桶:vue+ vuex+axios+vue-router+webp ...

  7. 修改IP和DNS的dos命令

    修改IP,掩码,网关命令: netsh interface ip set address "本地连接" static 192.168.3.188 255.255.255.0 192 ...

  8. react mobx webpack 使用案例

    1.package.json: { "name": "wtest", "version": "1.0.0", " ...

  9. sql server 给表加说明,给列/字段加说明

    --sql server给表加说明: --banner EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Banner ...

  10. 数据库设计和ER模型-------之关系模型的基本概念(第二章)

    关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...