三级联动通常指的是在网页表单中,通过三个下拉菜单(选择框)实现数据的级联选择。例如,在选择地址时,先选择省份,再选择城市,最后选择区县。这种交互方式可以提高用户体验,减少用户输入。
以下是一个简单的PHP和JavaScript实现的动态三级联动示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>三级联动示例</title>
</head>
<body>
<select id="province" onchange="loadCities(this.value)">
<option value="">请选择省份</option>
</select>
<select id="city" onchange="loadDistricts(this.value)">
<option value="">请选择城市</option>
</select>
<select id="district">
<option value="">请选择区县</option>
</select>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
</body>
</html><?php
header('Content-Type: application/json');
$provinces = [
['id' => 1, 'name' => '广东省'],
['id' => 2, 'name' => '湖南省']
];
$cities = [
['id' => 1, 'province_id' => 1, 'name' => '广州市'],
['id' => 2, 'province_id' => 1, 'name' => '深圳市'],
['id' => 3, 'province_id' => 2, 'name' => '长沙市'],
['id' => 4, 'province_id' => 2, 'name' => '岳阳市']
];
$districts = [
['id' => 1, 'city_id' => 1, 'name' => '天河区'],
['id' => 2, 'city_id' => 1, 'name' => '越秀区'],
['id' => 3, 'city_id' => 2, 'name' => '南山区'],
['id' => 4, 'city_id' => 3, 'name' => '芙蓉区']
];
if ($_GET['type'] == 'provinces') {
echo json_encode($provinces);
} elseif ($_GET['type'] == 'cities' && isset($_GET['province_id'])) {
$filtered_cities = array_filter($cities, function($city) use ($_GET) {
return $city['province_id'] == $_GET['province_id'];
});
echo json_encode(array_values($filtered_cities));
} elseif ($_GET['type'] == 'districts' && isset($_GET['city_id'])) {
$filtered_districts = array_filter($districts, function($district) use ($_GET) {
return $district['city_id'] == $_GET['city_id'];
});
echo json_encode(array_values($filtered_districts));
}
?>$(document).ready(function() {
$.getJSON('server.php?type=provinces', function(data) {
$.each(data, function(key, value) {
$('#province').append($('<option>').val(value.id).text(value.name));
});
});
$('#province').change(function() {
loadCities($(this).val());
});
$('#city').change(function() {
loadDistricts($(this).val());
});
});
function loadCities(provinceId) {
$('#city').html('<option value="">请选择城市</option>');
$('#district').html('<option value="">请选择区县</option>');
if (provinceId) {
$.getJSON('server.php?type=cities&province_id=' + provinceId, function(data) {
$.each(data, function(key, value) {
$('#city').append($('<option>').val(value.id).text(value.name));
});
});
}
}
function loadDistricts(cityId) {
$('#district').html('<option value="">请选择区县</option>');
if (cityId) {
$.getJSON('server.php?type=districts&city_id=' + cityId, function(data) {
$.each(data, function(key, value) {
$('#district').append($('<option>').val(value.id).text(value.name));
});
});
}
}通过以上示例和解释,你应该能够理解三级联动的基本概念、实现方式以及常见问题及其解决方法。
没有搜到相关的沙龙