ajax三级联动

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>

        <script type="text/javascript">
            window.onload=function(){
                function $(id) {
                    return document.getElementById(id);
                }

                function getXHR() {
                    //1、创建ajax引擎
                    var oAjax;
                    if(window.XMLHttpRequest) {
                        oAjax = new XMLHttpRequest();
                    } else {
                        oAjax = new ActiveXObject("Microsoft.XMLHTTP");
                    }

                    return oAjax;
                }

                $('sheng').onchange=function(){
                    var oAjax=getXHR();

                    if(oAjax){
                        var url='/citylist.php?time='+new Date+'&name='+$('sheng').value;
                        oAjax.open('GET', url, true);
                        oAjax.send(null);

                        oAjax.onreadystatechange=function(){
                            //alert('现在的状态'+oAjax.readyState);
                            if(oAjax.readyState==4){
                                if(oAjax.status==200){
                                    var arr=eval(oAjax.responseText);
                                    //alert(arr.length);

                                    $('city').length=0;
                                    var oPtion=document.createElement('option');
                                    oPtion.innerHTML='--城市--';
                                    $('city').appendChild(oPtion);
                                    for(var i=0;i<arr.length;i++){
                                        var oPtion=document.createElement('option');
                                        oPtion.innerHTML=arr[i].city;

                                        $('city').appendChild(oPtion);
                                    }
                                }
                                //alert(oAjax.responseText);
                                //$('inf').innerHTML=oAjax.responseText;
                            }
                        }

                    }
                }


            }
        </script>
    </head>
    <body>
        <form action="" method="post">
            <select id="sheng">
                <option value="s">--省份--</option>
                <option value="gx">广西</option>
                <option value="gd">广东</option>
            </select>
            <select id="city">
                <option value="">--城市--</option>

            </select>
            <select id="xian">
                <option value="">--县城--</option>

            </select>
        </form>
    </body>
</html>

三级联动处理函数:citylist.php

<?php
    //这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式
    header("Content-Type: text/text;charset=utf-8");
    //告诉浏览器不要缓存数据
    header("Cache-Control: no-cache");

    $sheng=$_GET['name'];

    file_put_contents("d:/mylog.log",$sheng."\r\n",FILE_APPEND);

    if($sheng=='gx'){
        echo '[{"city":"南宁"},{"city":"桂林"},{"city":"柳州"}]';
    }
    else if($sheng=='gd'){
        echo '[{"city":"广州"},{"city":"东莞"},{"city":"佛山"}]';
    }

?>
实现三级联动下拉菜单的方法有很多种,其中比较常用的是使用 Ajax 技术来实现。 以下是一个简单的示例代码: HTML: ```html <select name="province" id="province"> <option value="">请选择省份</option> <option value="1">广东省</option> <<option value="2">浙江省</option> </select> <select name="city" id="city"> <option value="">请选择城市</option> </select> <select name="district" id="district"> <option value="">请选择地区</option> </select> ``` JavaScript: ```javascript $(function() { // 省份下拉菜单改变事件 $('#province').change(function() { var provinceId = $(this).val(); if (provinceId) { // 发送 Ajax 请求获取城市数据 $.ajax({ url: '/get_cities', type: 'GET', data: {province_id: provinceId}, success: function(data) { // 清空城市和地区下拉菜单 $('#city').empty(); $('#district').empty(); // 添加城市选项 $('#city').append('<option value="">请选择城市</option>'); $.each(data, function(index, city) { $('#city').append('<option value="' + city.id + '">' + city.name + '</option>'); }); } }); } else { // 清空城市和地区下拉菜单 $('#city').empty(); $('#district').empty(); } }); // 城市下拉菜单改变事件 $('#city').change(function() { var cityId = $(this).val(); if (cityId) { // 发送 Ajax 请求获取地区数据 $.ajax({ url: '/get_districts', type: 'GET', data: {city_id: cityId}, success: function(data) { // 清空地区下拉菜单 $('#district').empty(); // 添加地区选项 $('#district').append('<option value="">请选择地区</option>'); $.each(data, function(index, district) { $('#district').append('<option value="' + district.id + '">' + district.name + '</option>'); }); } }); } else { // 清空地区下拉菜单 $('#district').empty(); } }); }); ``` 其中,`/get_cities` 和 `/get_districts` 是后端接口,用于返回城市和地区数据。当省份选项改变时,发送 AJAX 请求,获取对应的城市数据,并动态生成城市选项;当城市选项改变时,发送 AJAX 请求,获取对应的地区数据,并动态生成地区选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值