zoukankan      html  css  js  c++  java
  • Ajax实现的城市二级联动三

    把之前2篇整合在一起

    1、html

    <select id="province">
        <option>请选择</option>
      </select>
      <select id="city">
        <option>请选择</option>
      </select>

    2、javascript

    //创建获取ajax核心对象的函数
          function getXhr(){
              var xhr = null;
              if(window.XMLHttpRequest){
                  xhr = new XMLHttpRequest();
              }else{
                  xhr = new ActiveXObject("Microsoft.XMLHttp");
              }
              return xhr;
          }
            var xhr = getXhr();
            // 第一次执行Ajax异步请求 - 省份
            window.onload = function(){
                xhr.open("get","finaly.php?state=1");
                xhr.send(null);
                xhr.onreadystatechange = function(){
                if(xhr.readyState==4&&xhr.status==200){
                        var data = xhr.responseText;
                        // 将字符串转换为数组
                        var provinces = data.split(",");
                        // 遍历数组
                        for(var i=0;i<provinces.length;i++){
                            // 创建option元素添加到id为province元素上
                            var option = document.createElement("option");
                            var text = document.createTextNode(provinces[i]);
                            option.appendChild(text);
                            var province = document.getElementById("province");
                            province.appendChild(option);
                        }
                    }    
                }
            };
            // 第二次执行Ajax异步请求 - 城市
            var province=document.getElementById("province");
            province.onchange = function(){
                var city = document.getElementById("city");
                var opts = city.getElementsByTagName("option");
                for(var z=opts.length-1;z>0;z--){
                    city.removeChild(opts[z]);
                }
                if(province.value != "请选择"){
                    xhr.open("post","finaly.php");
                    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    xhr.send("state=2&province="+province.value);
                    xhr.onreadystatechange = function(){
                        if(xhr.readyState==4&&xhr.status==200){
                            var data = xhr.responseText;
                            var cities = data.split(",");
                            for(var i=0;i<cities.length;i++){
                                var option = document.createElement("option");
                                var text = document.createTextNode(cities[i]);
                                option.appendChild(text);
                                city.appendChild(option);
                            }
                        }
                    }
                }
            };

    3、finaly.php

    <?php
        // 接收客户端发送的请求数据 - state
        $state = $_REQUEST['state'];
        // 判断$state的值
        if($state == 1){// 获取省份
            echo '山东省,辽宁省,吉林省';
        }else{// 获取城市
            $province = $_POST['province'];
            switch ($province){
                case '山东省':
                    echo '青岛市,济南市,威海市,日照市,德州市';
                    break;
                case '辽宁省':
                    echo '沈阳市,大连市,铁岭市,丹东市,锦州市';
                    break;
                case '吉林省':
                    echo '长春市,松原市,吉林市,通化市,四平市';
                    break;
            }
        }
    ?>
  • 相关阅读:
    zabbix邮件报警功能的验证
    linux下拷贝命令中的文件过滤操作记录
    Docker容器数据卷-Volume小结
    Elasticsearch集群监控指标学习
    MySQL 更换MyISAM存储引擎为Innodb的操作记录
    MySQL 占用过高CPU时的优化手段
    MySQL 连接数设置操作(Too many connections)及设置md5值的加密密码
    Android Studio aidl文件路径自定义问题
    Android资源混淆 + 混淆忽略 .so库
    Android Studio 换主题(Material Theme..)
  • 原文地址:https://www.cnblogs.com/-walker/p/6417274.html
Copyright © 2011-2022 走看看