<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--------------------------------------------------------------

--省的字段是:province
--市的字段是:city
--县的字段是:area
--------------------------------------------------------------------------->
<script type="text/javascript">

var xmlHttp;//声明变量
var requestType="";//声明初始类型为空
function createXMLHttpRequest()//定义创建一个跨浏览器函数的开头
{
  
 if(window.ActiveXObject)//ActiveXObject对象到找到的时候返回的是真,否则是假

{
    
   xmlHttp=new
ActiveXObject("Microsoft.XMLHTTP");//这个是使用IE的方法创建XmlHttp
    }
    else
if(window.XMLHttpRequest)
    {
    
   xmlHttp=new
XMLHttpRequest();//这个是使用非IE的方法创建XmlHttp
    }
}

function handleStateChange(){//判断返回的一个函数,来确定执行那个的函数
  
 if(xmlHttp.readyState==4)
    
   {//4说明是执行交互完毕0 (未初始化)1 (正在装载)2
(装载完毕) 3 (交互中)4 (完成)
    
   if(xmlHttp.status==200)
    
     
 {//http的一个报头说明成功找到
    
     
 if(requestType=="city"){//判断查询的类型
    
     
     
     
     
   showcity();//返回响应的显示
    
     
     
     
     }
    
     
 else if(requestType="area"){//判断响应的查询的类型
    
     
     
     
     
     
 showarea();//返回响应的显示
    
     
     
     
     
   }
    
     
 }
    
   }
}

function queryCity(citycode){//执行程序查询,查询城市的
  
 createXMLHttpRequest();//调用创建XmlHttp的函数
  
 requestType="city";//表示类型,查询城市处理显示的时候需要用到
    var
url='data.php?provincecode='+citycode+'&n='+Math.random();//设定URL传值方法同时防止缓存

xmlHttp.open("GET",url,true);//建立服务器连接,异步传输tree

xmlHttp.onreadystatechange=handleStateChange;//处理这个响应所需要的函数

xmlHttp.send(null);//执行程序函数这里的中间的参数是因为GET原因
}

function queryArea(citycode){//查询程序
  
 createXMLHttpRequest();//调用创建XmlHttp的函数
  
 requestType="area";//查询县的
    var
url="data.php?citycode="+citycode+'&n='+Math.random();//设定URL传值方法同时防止缓存

xmlHttp.open("GET",url,true);
  
 xmlHttp.onreadystatechange=handleStateChange;//处理响应的函数名

xmlHttp.send(null);//执行程序函数这里的中间的参数是因为GET原因
}

function showcity(){//显示函数
  
 document.getElementByIdx_x("city").innerHTML=xmlHttp.responseText;//捕获ID显示返回的数据

}
function showarea(){
  
 document.getElementByIdx_x("area").innerHTML=xmlHttp.responseText;//捕获ID显示返回的数据

}
</script>
</head>
<body>
<?php
  
 $conn=mysql_connect("localhost","root","root");//链接数据库
  
 mysql_select_db("novel");//选择数据库
  
 mysql_query("set
names 'utf8'");//设定字符集
  
 $sql="select *
from province";//查询数据库province表也就是省
  
 $result=mysql_query($sql);//执行语句赋值给变量
  
 ?>
  
 <form id='form1'><!--输出表单头-->

<!--输出下拉列表框,并设定onchange响应事件,把省值传递过去-->

<select id='province'onchange='queryCity(this.options[this.selectedIndex].value)'>
  
 <!--输出下拉列表项值-->

<option value='-1' selected>请选择省份</option>
  
 <?php
  
 while($row=mysql_fetch_row($result)){
  
 //循环循环查询显示省输出数据显示
    
   echo "<option
value='$row[1]'>$row[2]</option>\n";

}
  
 ?>
  
 </select><!--下拉列表项尾数-->

<span id='city'></span><!--显示数据的城市的位置-->

<span id='area'></span><!--显示数据的城市的位置-->

</form><!--表单项结尾-->
</body>
</html>

data.php 代码

<?php
$provincecode=$_GET['provincecode'];//接收省键值
$citycode=$_GET['citycode'];//接收城市键值
$conn=mysql_connect("localhost","root","root");//连接主机
mysql_select_db("novel");//选择数据库
mysql_query("set
names 'utf8'");
if($provincecode!=""){//如果传递过来的不为空则执行
  
 $sql="select *
from city where provincecode=$provincecode";//查询城市符合属于上边传递过来的省的字段
  
 $result=mysql_query($sql);//执行SQL查询语句
  
 print_r($row);
?>
  
 <select
onchange='queryArea(this.options[this.selectedIndex].value)'><!--下拉列表框开头-->

<option value='-1'
selected>请选择城市</option><!--下拉列表框值开头-->

<?php while($row=mysql_fetch_row($result)){//循环记录集?>
    
   <option
value="]?></option>

<?php }?>
  
 </select>
<?php }?>
<?php
  
 if($citycode!=""){
  
 $sql="select *
from area where citycode=$citycode";
  
 $result=mysql_query($sql);
  
 echo "<select>\n";

echo "<option value='-1'
selected>请选择县</option>\n";

while($row=mysql_fetch_row($result)){
    
   echo "<option value='$row[1]'>$row[2]</option>\n";

}
  
 echo "</select>\n";
}
?>

PHP+AJAX 地区三级联动代码的更多相关文章

  1. 省市区(县)三级联动代码(js 数据源)

    ylbtech-JavaScript-Utility:省市区(县)三级联动代码(js 数据源) 省市区(县)三级联动代码(js 数据源) 1.A,源代码(Source Code)返回顶部 1.A.1, ...

  2. ajax 实现三级联动

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

  3. ajax 实现三级联动下拉菜单

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

  4. PHP ajax 实现三级联动

    在一个单独JS页面中,利用ajax实现三级联动,做成一个三级联动形式,以便于以后随时调用 JS代码: $(document).ready(function(e) { $("#sanji&qu ...

  5. AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;

    js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...

  6. 在使用ajax实现三级联动调用数据库数据并通过调出的数据进行二级表单查询

    在使用ajax实现三级联动查询数据库数据后再使用ajax无刷新方式使用三级联动调出的数据进行二级查询 但是现在遇到问题,在二级查询的时候期望是将数据以表格的形式展示在三级联动的下方,但是现在在查询后会 ...

  7. 非常不错的地区三级联动,js简单易懂。封装起来了

    首先需要引入area.js,然后配置并初始化插件: 例: <!-- 绑定银行卡开始 --> <script src="js/area.js"></sc ...

  8. php+ajax的三级联动下拉菜单

    封装一个三级联动,就可以在任何页面进行引用了 先写个页面引用一下这个js <head> <meta http-equiv="Content-Type" conte ...

  9. ajax省市区三级联动

    jdbc+servlet+ajax开发省市区三级联动 技术点:jdbc操作数据库,ajax提交,字符拦截器,三级联动 特点:局部刷新达到省市区三级联动,举一反三可以做商品分类等 宗旨:从实战中学习 博 ...

随机推荐

  1. Linux学习 -- 备份与恢复

    备份 Linux系统需要备份的数据 /root/ /home/ /var/spool/mail /etc/ others 备份策略 完全备份 增量备份 差异备份 备份和恢复命令 dump  resto ...

  2. maven实战_测试覆盖率插件使用

    原文:http://www.cnblogs.com/yucongblog/p/5297051.html 1.环境准备 <project> ... <reporting> < ...

  3. php basename()文件夹 路径 文件后缀名 读取pathinfo()

    $path = "/www/mywebsite/images/myphoto.jpg"; 1.pathinfo()函数 pathinfo()函数返回的是一个包含了文件信息的数组,数 ...

  4. magento head.phtml 加载<a target=_parent

    <script language="javascript">function alinks(){  var links = document.getElementsBy ...

  5. Json解析要点

    解析Json时,昨天遇到了新的问题,之前都是解析的数组,不是数组的用类来做. 这是Json串; {"status":"00001","ver" ...

  6. js插入节点appendChild和insertBefore

    首先 从定义来理解 这两个方法: appendChild() 方法:可向节点的子节点列表的末尾添加新的子节点.语法:appendChild(newchild) insertBefore() 方法:可在 ...

  7. 转 OGG add trandata 到底做了什么

    有的时候我们做OGG的时候add trandata会出现异常. 这里就剖析一下add trandata到底做了什么 GGSCI (yjfora81 as ggs_admin@testdb) 2> ...

  8. gen_grant_sel.sql

    set echo off feedback off verify off pagesize 0 linesize 120 define v_grantee=&1 define v_grant_ ...

  9. Robot Framework用法总结

    今天总结下Robot Framework最基本的用法,一来呢,希望自己以后看到这篇总结,很快能回忆起如何使用Robot Framework.二来呢,以初学者的姿态总结Robot Framework,希 ...

  10. 原创:运行loadtest时报错the load test results repository was created with a previous version and is not compatible

    如果run setting中的Storage Type设置为DataBase,则需要设置数据库来保存loadtest的运行结果,如下图所示 图:Storage Type设置为DataBase 图:在M ...