利用ajax实现省市县三级联动之二,三

来源:互联网 发布:全球域名快讯 编辑:程序博客网 时间:2024/05/17 09:43

  原文出处:http://www.3gput.com/forum.php?mod=viewthread&tid=145

今天继续昨天的,在这里给大家介绍剩下的两种方法:

   第一种,是通过返回字符串实现的,代码如下:

Code:
  1. san-area-html2.html   
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  7. <title>省市县三级联动</title>  
  8. </head>  
  9. <body>  
  10. <select id="sheng" onchange="getArea(this.value,'shi')" ></select> 省   
  11. <select id="shi"  onchange="getArea(this.value,'xian')" ></select> 市   
  12. <select id="xian" ></select>    
  13. </body>  
  14. </html>  
  15. <script language="javascript" type="text/javascript">  
  16.    function getArea(id,p){   
  17.     //初始化ajax   
  18.   var xhr = new XMLHttpRequest();   
  19.   var url = "./area-html2.php?id="+id+"r="+Math.random();   
  20.   var sel=document.getElementById(p)   
  21.    //打开请求   
  22.  xhr.open("get",url,true);   
  23.    //发送数据   
  24.   xhr.send(null);   
  25.      //等待响应   
  26.   xhr.onreadystatechange = function (){   
  27.            if(xhr.readyState == 4){   
  28.                   var arr1=xhr.responseText.split(";");   
  29.                   sel.length=0;   
  30.                  for(var i=0;i<arr1.length;i++){   
  31.                  var arr2=arr1[i].split(":");   
  32.                  //产生一个option对象   
  33.          var opt=new Option(arr2[1],arr2[0]);   
  34.                    //添加到当前列表当中   
  35.     sel.add(opt,null);   
  36.      }   
  37.             
  38.                 }   
  39.          
  40.         }    
  41.  }   
  42.   
  43. //加载所有的省份   
  44. getArea("",'sheng')   
  45. </script> 
  46. san-area-html2.php
  47. <?php
    header("Content-Type:text/html;charset=UTF-8");
    //连接数据库
    sql_connect("localhost","root","") or die("数据库连接失败");
    //选择连接的数据库
    mysql_select_db("phpwork");
    //设置编码
    mysql_query("set names utf8");
    //根据用户返回的ID查询
    $id=$_GET['id'];
    $sql="select id,name from area where id like '".$id."__'";
    echo $sql;
    $rs=mysql_query($sql);
    //将查询的结果封装成html标记
    echo ":";
    while($rows=mysql_fetch_assoc($rs)){
       echo ';'.$rows['id'].':'.$rows['name'];
     }
  48. ?> 

第二种,是通过返回js对象实现,代码如下:

Code:
  1. area-json.html   
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  7. <title>省市县三级联动</title>  
  8. </head>  
  9. <body>  
  10. <select id="sheng" onchange="getArea(this.value,'shi')" ></select> 省    
  11. <select id="shi"  onchange="getArea(this.value,'xian')" ></select> 市    
  12. <select id="xian" ></select>    
  13. </body>  
  14. </html>  
  15. <script language="javascript" type="text/javascript">  
  16.  function getArea(id,p){   
  17.    //初始化ajax   
  18.   var xhr = new XMLHttpRequest();   
  19.   var url = "./area-json3.php?id="+id+"r="+Math.random();   
  20.   var sel=document.getElementById(p);   
  21.    //打开请求   
  22.   xhr.open("get",url,true);   
  23.    //发送数据   
  24.   xhr.send(null);   
  25.    //等待响应   
  26.   xhr.onreadystatechange = function (){   
  27.           if(xhr.readyState == 4){   
  28.                    var jsonstr=xhr.responseText;   
  29.      //清空下拉菜单   
  30.      sel.length=0;   
  31.                   var obj=eval("("+jsonstr+")")   
  32.        for(var i=0;i<obj.citys.length;i++){   
  33.           //产生一个option对象   
  34.        var opt=new Option(obj.citys[i].name,obj.citys[i].id);   
  35.       //添加到当前列表当中   
  36.        sel.add(opt,null);   
  37.          }   
  38.             
  39.       }   
  40.          
  41.     }    
  42.  }   
  43.   
  44. //加载所有的省份   
  45. getArea("",'sheng')   
  46. </script>  
  47.   
  48. area-json3.php   
  49.   
  50. <?php  
  51. header("Content-Type:text/html;charset=UTF-8");   
  52. //连接数据库   
  53. include("../include/dbconn.php");   
  54. //根据用户返回的ID查询   
  55. $id=$_GET['id'];   
  56. $sql="select id,name from area where id like '".$id."__'";   
  57. $rs=mysql_query($sql);   
  58. //定义一个数组用于存放数据库中查询到得每一条数据   
  59. $arr =array();   
  60. while($rows=mysql_fetch_assoc($rs)){   
  61.   //构建一个二维数组,每一个元素是一个对象(一条记录)$arr将构建str的[{"id":"11","name":"北京"},{"id":"13","name":"河北"}]部分   
  62.   $arr[]= $rows;   
  63. }   
  64. //重新产生新的数组构建 $arr将构建{"ctiys":[{"id":"11","name":"北京"},{"id":"13","name":"河北"}]}   
  65. $arr2 = array('citys'=>$arr);   
  66. echo json_encode($arr2);   
  67. ?>  

在这里简单的介绍一下JSON的概念:JSON概念很简单,JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。由于使用的是 javascript 语法,因此JSON 定义可以包含在javascript 文件中,对其的访问无需通过基于 XML 的语言来额外解析。这两种没有浏览器的限制!要想更多的关于php,javascript,java,.net等等,请多多关注www.3gput.com!!!!

原创粉丝点击