只使用前端实现基于AJAX的级联下拉菜单完整代码示例
时间: 2023-12-10 13:05:06 浏览: 67
好的,下面是一个基于AJAX的级联下拉菜单的前端实现完整代码示例:
HTML部分:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>基于AJAX的级联下拉菜单</title>
</head>
<body>
<label for="province">省份:</label>
<select id="province" name="province"></select>
<label for="city">城市:</label>
<select id="city" name="city"></select>
<label for="district">区县:</label>
<select id="district" name="district"></select>
<script src="script.js"></script>
</body>
</html>
```
JavaScript部分:
```javascript
// 获取省份列表
function getProvinceList() {
// 发送AJAX请求获取省份列表数据
let xhr = new XMLHttpRequest();
xhr.open('GET', 'province.json');
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
let provinceList = JSON.parse(xhr.responseText);
// 将省份列表数据渲染到下拉菜单中
let select = document.getElementById('province');
select.innerHTML = '';
for (let i = 0; i < provinceList.length; i++) {
let option = document.createElement('option');
option.value = provinceList[i].id;
option.text = provinceList[i].name;
select.appendChild(option);
}
// 监听省份下拉菜单的变化事件
select.addEventListener('change', function() {
getCityList(this.value);
});
}
};
}
// 获取城市列表
function getCityList(provinceId) {
// 发送AJAX请求获取城市列表数据
let xhr = new XMLHttpRequest();
xhr.open('GET', 'city.json');
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
let cityList = JSON.parse(xhr.responseText);
// 将城市列表数据渲染到下拉菜单中
let select = document.getElementById('city');
select.innerHTML = '';
for (let i = 0; i < cityList.length; i++) {
if (cityList[i].provinceId == provinceId) {
let option = document.createElement('option');
option.value = cityList[i].id;
option.text = cityList[i].name;
select.appendChild(option);
}
}
// 监听城市下拉菜单的变化事件
select.addEventListener('change', function() {
getDistrictList(this.value);
});
}
};
}
// 获取区县列表
function getDistrictList(cityId) {
// 发送AJAX请求获取区县列表数据
let xhr = new XMLHttpRequest();
xhr.open('GET', 'district.json');
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
let districtList = JSON.parse(xhr.responseText);
// 将区县列表数据渲染到下拉菜单中
let select = document.getElementById('district');
select.innerHTML = '';
for (let i = 0; i < districtList.length; i++) {
if (districtList[i].cityId == cityId) {
let option = document.createElement('option');
option.value = districtList[i].id;
option.text = districtList[i].name;
select.appendChild(option);
}
}
}
};
}
// 页面加载时初始化省份列表
window.onload = function() {
getProvinceList();
};
```
在这个示例中,我们使用了JSON格式的数据文件来模拟获取省份、城市和区县的列表数据。在实际使用时,你需要将`province.json`、`city.json`和`district.json`替换为你所使用的后端API的URL。同时,你还需要在后端API中实现对应的数据接口来返回相应的列表数据。
阅读全文