zoukankan      html  css  js  c++  java
  • 用php+mysql+ajax+jquery做省市区三级联动

    要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择。

    实现技术:php ajax

    实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化。

    使用chinastates表查询

    Ajax加载数据

     1.这是chinastates表

     

    2.做一个简单html:ssq.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    
            
            <script src="dist/js/jquery-1.11.2.min.js" ></script>
            <script src="ssq.js"></script>
            
    </head>
    <body>
            <div id="ssq"></div>
            
    </body>
        
        
    </html>

    3.根据html做jquery:ssq.js

    // JavaScript Document
    
    //当页面内容都加载完才执行
    $(document).ready(function(e) {
        //加载三个下拉列表
        $("#ssq").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>");
        
        //加载显示数据
        //1.加载省份
        FillSheng();
        //2.加载市
        FillShi();
        //3.加载区
        FillQu();
    
        //当省份选中变化,重新加载市和区
        $("#sheng").change(function(){ //当元素的值发生改变时,会发生 change 事件,该事件仅适用于文本域(text field),以及 textarea 和 select 元素。
            //加载市
            FillShi();
            //加载区
            FillQu();
            
            })
        
        //当市选中变化,重新加载区
        $("#shi").change(function(){
            //加载区
            FillQu();
            })
            
        
    });
    
    
    //加载省份信息
    function FillSheng()
    {
        //取父级代号
        var pcode ="0001";
        
        //根据父级代号查数据
        $.ajax({
                    //取消异步,也就是必须完成上面才能走下面
                    async:false,
                    url:"load.php",
                    data:{pcode:pcode},
                    type:"POST",
                    dataType:"JSON",
                    success: function(data){
                            var str="";
                            //遍历数组,把它放入sj
                            for(var sj in data){
                                //<option value="11">北京</option>
                                str=str+"<option value='"+data[sj].AreaCode+"'>"+data[sj].AreaName +"</option>";
                            }
                            $("#sheng").html(str);
                            
                    }
            
            
            
            });
        
    }
    
    //加载市信息
    function FillShi()
    {
        //取父级代号
        var pcode =$("#sheng").val();
        
        //根据父级代号查数据
        $.ajax({
                    //取消异步,也就是必须完成上面才能走下面
                    async:false,
                    url:"load.php",
                    data:{pcode:pcode},
                    type:"POST",
                    dataType:"JSON",
                    success: function(data){
                            var str="";
                            //遍历数组,把它放入sj
                            for(var sj in data){
                                //<option value="11">北京</option>
                                str=str+"<option value='"+data[sj].AreaCode+"'>"+data[sj].AreaName +"</option>";
                            }
                            $("#shi").html(str);
                            
                    }
            
            
            
            });
        
    }
    
    
    //加载区信息
    function FillQu()
    {
        //取父级代号
        var pcode =$("#shi").val();
        
        //根据父级代号查数据
        $.ajax({
                    //不需要取消异步
                    url:"load.php",
                    data:{pcode:pcode},
                    type:"POST",
                    dataType:"JSON",
                    success: function(data){
                            var str="";
                            //遍历数组,把它放入sj
                            for(var sj in data){
                                //<option value="11">北京</option>
                                str=str+"<option value='"+data[sj].AreaCode+"'>"+data[sj].AreaName +"</option>";
                                
                            }
                            $("#qu").html(str);
                            
                    }
            
            
            
            });
        
    }

    4.再把数据库连接起来 :load.php,把DBDA重新加载一个方法:JsonQuery

    <?php
    $pcode=$_POST["pcode"];
    
    include("../fengzhuang/DBDA.class.php");
    $db=new DBDA();
    
    $sql="select * from chinastates where ParentAreaCode='{$pcode}'";
    
    echo $str=$db->JsonQuery($sql);
    <?php
    class DBDA
    {   //设定登录默认值
        public $host = "localhost";
        public $uid = "root";
        public $pwd = "root";
        public $dbname = "mydb";
        //设定$type = 1为查询语句,$type =0为增删改语句
        public function Query($sql,$type=1)
        {     
            $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
            $result = $db->query($sql);
            
            if($type=="1")
            {    //返回查询结果
                return $result->fetch_all();
            }else
            {   //返回ture或false
                return $result;
            }
        }
        
        //返回字符串
        public function StrQuery($sql,$type=1)
        {     
            $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
            $result = $db->query($sql);
            
            if($type=="1")
            {    
                $arr = $result->fetch_all();
                $str ="";
                foreach($arr as $v)
                {
                    $str = $str.implode("^",$v)."|";
                }
                return substr($str,0,strlen($str)-1);
            }else
            {   //返回ture或false
                return $result;
            }
        }
        
        //返回JSON
        public function JsonQuery($sql,$type=1)
        {     
            $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
            $result = $db->query($sql);
            
            if($type=="1")
            {    
                $arr = $result->fetch_all(MYSQLI_ASSOC);
                 return json_encode($arr);
                
            }else
            {   //返回ture或false
                return $result;
            }
        }
    }

    做出来的效果如图所示:

    然后我们找山东省淄博市张店区:

  • 相关阅读:
    深入Apache NiFi 之源码学习
    Apache NiFi 核心概念和关键特性
    运营商手机视频流量包业务日志ETL及统计分析
    HDP Hive性能调优
    redis 实现登陆次数限制
    Hadoop和Spark的Shuffer过程对比解析
    Scala-基础知识
    Python基础知识问答
    Python基础知识+计算器练习
    Sqoop架构原理及常用命令参数
  • 原文地址:https://www.cnblogs.com/shenzikun1314/p/6547101.html
Copyright © 2011-2022 走看看