php 二级联动

如何实现二级联动

工作原理

二级联动在开发中是比较常见的一个技术点,它主要运用了JS的局部刷新技术ajax,不同于一般页面全局刷新,它只会刷新我们需要改变值的地方,我们首先看下它的工作流程。
第一步:我们会向后台发送一个请求
第二步:后台接受请求后,会返回给我们一个值
第三步:将值用JS呈现在页面中

HTML代码

<html>
<head>
<title>
二级联动
</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf8">
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<style>
#area-box{width:500px;height:400px;margin:0 auto;border:0px solid #dddddd;text-align:center;}
.area-select{width:200px;height:30px;margin-top:30px;margin-left:30px;}
</style>
<head>
<body>
    <div id="area-box">
        <select class="area-select" id='address'>
            <option value="0">请选择省份</option>
            <option value="1">四川</option>
            <option value="2">河北</option>
            <option value="3">湖南</option>
        </select>

        <select class="area-select" id="city">
            <option>请选择城市</option>
        </select>
    </div>
    <script>
    $(function(){
        //初始化数据
        var url = 'address.php'; //后台地址
        $("#address").change(function(){  //监听下拉列表的change事件
            var address = $(this).val();  //获取下拉列表选中的值
            //发送一个post请求
            $.ajax({
                type:'post',
                url:url,
                data:{key:address},
                dataType:'json',
                success:function(data){  //请求成功回调函数
                    var status = data.status; //获取返回值
                    var address = data.data;
                    if(status == 200){  //判断状态码,200为成功
                        var option = '';
                        for(var i=0;i<address.length;i++){  //循环获取返回值,并组装成html代码
                            option +='<option>'+address[i]+'</option>';
                        }
                    }else{
                        var option = '<option>请选择城市</option>';  //默认值
                    }

                    $("#city").html(option);  //js刷新第二个下拉框的值
                },
            });
        });
    });
    </script>
</body>

PHP代码

<?php
    $key = $_POST['key'];  //获取值
    $address[1] = array('成都','绵阳','德阳');
    $address[2] = array('石家庄','唐山','秦皇岛');
    $address[3] = array('长沙','株洲','湘潭');

    if(!empty($address[$key])){ //有值,组装数据
        $result['status'] = 200;
        $result['data'] = $address[$key];
    }else{  //无值,返回状态码220
        $result['status'] = 220;
    }


    echo json_encode($result);  //返回JSON数据
?>

这里写图片描述

PHP二级联动下拉列表是一种常用的网页交互方式,用于根据用户的选择,在第一个下拉列表的选项改变时自动改变第二个下拉列表的选项。下面是一个实现的示例: 首先,需要在页面中定义两个下拉列表,并为它们分别设置一个id: ```html <select id="select1" onchange="getSelectOptions()"> <option value="">请选择</option> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> <select id="select2"> <option value="">请选择</option> </select> ``` 然后,在JavaScript中定义一个函数`getSelectOptions()`用来根据第一个下拉列表的选择值,向服务器发送请求并更新第二个下拉列表的选项: ```javascript function getSelectOptions() { var select1 = document.getElementById("select1"); var select2 = document.getElementById("select2"); var selectedValue = select1.value; // 使用Ajax技术向服务器发送请求 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { // 处理返回的数据,更新第二个下拉列表的选项 select2.innerHTML = xhr.responseText; } }; xhr.open("GET", "get_options.php?selectedValue=" + selectedValue, true); xhr.send(); } ``` 最后,在服务器端编写一个PHP脚本(比如`get_options.php`)用来根据传入的选择值,查询数据库或其他数据源,并生成第二个下拉列表的选项: ```php <?php $selectedValue = $_GET["selectedValue"]; // 根据选择值查询数据库或其他数据源,并生成选项 $options = ""; // 用来存储生成的选项 if ($selectedValue == "1") { $options .= '<option value="1-1">选项1-1</option>'; $options .= '<option value="1-2">选项1-2</option>'; } elseif ($selectedValue == "2") { $options .= '<option value="2-1">选项2-1</option>'; $options .= '<option value="2-2">选项2-2</option>'; } elseif ($selectedValue == "3") { $options .= '<option value="3-1">选项3-1</option>'; $options .= '<option value="3-2">选项3-2</option>'; } echo $options; ?> ``` 当用户选择第一个下拉列表的某个选项时,JavaScript函数`getSelectOptions()`会被触发,发送请求到服务器并更新第二个下拉列表的选项。根据不同的选择值,服务器端脚本会生成相应的选项,并通过Ajax技术传递给客户端,从而实现二级联动下拉列表的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值