js+php做省份城市选择,三级联动,前后端简单交互,最详细

需要先安装xampp,,免费的软件,然后运行apache,我安装的英文版

 

没有红色或×或者报错,就能正常运行,如果软件有报错问题,可以网上搜索相关解决方案,都有.

 文件我写了四个,一个html,三个php,都放在xampp文件夹的htdocs或者dashboard里,要运行网页的时候,不能直接打开,要打开服务器网页,然后根据路径打开,我的在网页上的路径是这样的,http://127.0.0.1/dashboard/37.html

我的文件夹里面会有软件相关的文件,和此次代码用到的文件

 写代码前要知道的知识

使用ajax的四个步骤:

dom增加的操作

下面是html代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <select name="" id="province">
        <option value="">--请选择省份--</option>
    </select>
    <select name="" id="city">
        <option value="">--请选择城市--</option>
    </select>
    <select name="" id="county">
        <option value="">--请选择区县--</option>
    </select>

    <script>
        var province = document.getElementById("province")
        var city = document.getElementById("city")
        var county = document.getElementById("county")
        //Ajax的步骤
        var xml = new XMLHttpRequest();    //这里有括号,然后1.创建核心对象
        xml.open("get", "province.php", true);  //2.创建请求
        xml.send(null); //3.发送请求参数
        xml.onreadystatechange = function () {     //4.接收响应
            if (xml.readyState == 4 && xml.status == 200) {
                var procinces = xml.responseText;        //上面到这里的三行是固定格式,下面到if结尾是自己写的代码,然后这一行得到的是文本内容
                var provincesArr = procinces.split(",");   // 上一行的文本内容在这里转成了数组
                for (var i = 0; i < provincesArr.length; i++) {
                    var option = document.createElement("option"); //dom增加     1.创建元素
                    province.appendChild(option);    //添加到对应的位置
                    option.innerHTML = provincesArr[i];   //添加对应的属性和内容,省份已经变成了数组形式,所以可以用i,
                }
            }
        }
        //城市
        province.onchange = function () {  //当鼠标点击省份,选项改变的时候要做的事
            city.innerHTML = "<option>--请选择城市-- </option> ";   //省份改变了,清空上一次已选的选项内容,看见的是与当前省份对应的城市
            county.innerHTML = "<option>--请选择区县-- </option> "; //省份改变了,清空区县的选项内容
            xml.open("post", "city.php", true);
            xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  //用post,需要设置这个请求头,只加了这个,其他与get一样的步骤
            var province = document.getElementById("province")
            xml.send("provinceValue=" + province.value);
            xml.onreadystatechange = function () {
                if (xml.readyState == 4 && xml.status == 200) {
                    var cities = xml.responseText;
                    var citiesArr = cities.split(",");
                    for (var i = 0; i < citiesArr.length; i++) {
                        var option = document.createElement("option");
                        city.appendChild(option);
                        option.innerHTML = citiesArr[i];
                    }
                }
            }
        }
        //县区 county
        city.onchange = function () {
            county.innerHTML = "<option>--请选择区县-- </option> ";
            xml.open("post", "county.php", true);
            xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            var city = document.getElementById("city")
            xml.send("cityValue=" + city.value);
            xml.onreadystatechange = function () {
                if (xml.readyState == 4 && xml.status == 200) {
                    var counties = xml.responseText;
                    var countiesArr = counties.split(",");
                    for (var i = 0; i < countiesArr.length; i++) {
                        var option = document.createElement("option");
                        county.appendChild(option);
                        option.innerHTML = countiesArr[i];
                    }
                }
            }
        }
    </script>
</body>

</html>

下面是三个php代码

省份

<?php
echo "山东,浙江,四川,广东";
?>

城市

<?php
$provinceValue=$_REQUEST["provinceValue"];
if($provinceValue=="山东"){
echo"青岛,济南,烟台,潍坊";
}else if($provinceValue=="浙江"){
echo"杭州,宁波,温州,湖州";
}
else if($provinceValue=="四川"){
echo"成都,绵阳,温江,宜宾";
}
else if($provinceValue=="广东"){
echo"广州,东莞,汕头,珠海";
}
?>

县区 

<?php
$cityValue=$_REQUEST["cityValue"];
if($cityValue=="青岛"){
echo"城阳区,李沧区,崂山区";
}else if($cityValue=="济南"){
echo"天桥区,济阳区,章丘区";
}
else if($cityValue=="杭州"){
echo"西湖区,萧山区,钱塘区";
}
else if($cityValue=="温州"){
echo"龙湾区,洞头,瑞安市";
}

运行图

 


版权声明:本文为aa147258aa147原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。