zoukankan      html  css  js  c++  java
  • 使用php ajax写省、市、区、三级联动

    题目要求:

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

    实现技术:php ajax

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

    使用chinastates表查询

    <!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="jquery-1.11.2.min.js"></script>
    
    </head>
    <body>
    <h1>三级联动</h1>
    <select id="sheng"></select>
    <select id="shi"></select>
    <select id="qu"></select>
    
    </body>
    <script type="text/javascript">
        $(document).ready(function(e) {
            sheng();
            shi();
            qu();
            $("#sheng").change(function(){
                shi();
                qu();
            });
            $("#shi").change(function(){
                qu();
            });
        });
    
            function sheng() {
                var areacode = "0001";
                $.ajax({
                    async:false,
                    url: "liandongjiazai.php",
                    data: {areacode: areacode},
                    type: "POST",
                    dataType: "TEXT",
                    success: function (data) {
                        var str = "";
                        var hang = data.split("|");
                        for (var i = 0; i < hang.length; i++) {
                            var lie = hang[i].split("^");
                            str = str + "<option value='"+lie[0]+"'>" + lie[1] + "</option>";
                        }
                        $("#sheng").html(str);
                    }
                });
            }
            function shi() {
                var areacode = $("#sheng").val();
                $.ajax({
                    async:false,
                    url:"liandongjiazai.php",
                    data:{areacode:areacode},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                        var str = "";
    
                        var hang = data.split("|");
                        for(var i=0;i<hang.length;i++)
                        {
                            var lie = hang[i].split("^");
                            str = str+"<option value='"+lie[0]+"'>"+lie[1]+"</option>";
                        }
                        $("#shi").html(str);
    
                    }
                });
            }
            function qu() {
                var areacode = $("#shi").val();
                $.ajax({
                    url:"liandongjiazai.php",
                    data:{areacode:areacode},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                        var str = "";
    
                        var hang = data.split("|");
                        for(var i=0;i<hang.length;i++)
                        {
                            var lie = hang[i].split("^");
                            str = str+"<option value='"+lie[0]+"'>"+lie[1]+"</option>";
                        }
                        $("#qu").html(str);
    
                    }
                });
            }
    
    
    </script>
    </html>
    

     联动处理页面

    <?php
    
    $areacode = $_POST["areacode"];
    include("LZY.class.php");
    $db= new LZY();
    
    $sql = "select * from chinastates WHERE parentareacode='{$areacode}' ";
    $arr = $db->Query($sql);
    $str = "";
    foreach($arr as $v)
    {
        $str = $str.implode("^",$v)."|";
    
    }
    $str = substr($str,0,strlen($str)-1);
    echo $str;
    

      

    当然,我们也可以用 dataType:"json",方法,为了以后便于使用可以将三级联动做成jQuery插件,这样,变方便了使用。

    首先,我们先做出主页面的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="../../jquery-1.11.2.min.js"></script>
    <script src="sanji.js"></script>
    </head>
    
    <body>
    
    <div id="sanji"></div>
    
    </body>
    </html>
    

    然后就是我们封装的js插件了 

    // JavaScript Document
    // JavaScript Document
    $(document).ready(function(e) {
    	
    	//加载三个下拉列表
        $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>");
    	
    	//加载显示数据
    	//加载省份
    	FillSheng();
    	//加载市
    	FillShi();
    	//加载区
    	FillQu();
    	
    	//当省份选中变化,重新加载市和区
    	$("#sheng").change(function(){
    			//加载市
    			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 = "";
    					
    					for(var sj in data)
    					{
    						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 = "";
    					
    					for(var sj in data)
    					{
    						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 = "";
    					
    					for(var sj in data)
    					{
    						str = str+"<option value='"+data[sj].AreaCode+"'>"+data[sj].AreaName+"</option>";
    					}
    					
    					$("#qu").html(str);
    				}
    		});
    }
    

     最后是

    <?php
    $pcode = $_POST["pcode"];
    include("../../LZY.class.php");
    $db = new LZY();
    
    $sql = "select * from chinastates where parentareacode='{$pcode}'";
    
    echo $db->JsonQuery($sql);
    

      如果有需要封装类可以留言

  • 相关阅读:
    BOM
    定位
    浮动
    行内元素和块级元素
    Java SE之正则表达式五:切割
    Java SE之正则表达式四:获取
    Java SE之正则表达式三:替换
    Java SE之正则表达式二:匹配
    Java SE之正则表达式一:概述
    [C++]PAT乙级1012.数字分类 (20/20)
  • 原文地址:https://www.cnblogs.com/li1056822533/p/6544568.html
Copyright © 2011-2022 走看看