使用axios库异步读取存储在json文件中的省市区数据,将数据绑定到省、市、区下拉框,实现省市区联动省市区数据文件下载地址(下载后解压出provinces.json): https://www.mbu.cn/upload/file/20221222/6380729561317047202288602.rar
时间: 2023-08-18 07:06:24 浏览: 122
vue+axios+获取本地JSON,能量树能量收集
好的,这是一个关于异步读取json文件并绑定到下拉框的问题。下面是一个简单的实现过程:
首先,需要引入axios库:
```html
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
```
然后,在html中定义三个下拉框:
```html
<select id="province"></select>
<select id="city"></select>
<select id="area"></select>
```
接着,在js中使用axios发送异步请求读取json文件:
```javascript
axios.get('provinces.json')
.then(function (response) {
console.log(response.data); // 输出读取到的json数据
// 将数据绑定到省下拉框
var provinceSelect = document.getElementById('province');
for (var i=0; i<response.data.length; i++) {
var option = document.createElement('option');
option.value = response.data[i].name;
option.text = response.data[i].name;
provinceSelect.appendChild(option);
}
})
.catch(function (error) {
console.log(error);
});
```
这段代码中,我们使用axios的get方法发送异步请求,读取json文件中的数据。读取成功后,将省的数据绑定到省下拉框中。
接下来,需要实现省市区的联动。当省下拉框的选项改变时,需要重新绑定市下拉框的数据。当市下拉框的选项改变时,需要重新绑定区下拉框的数据。
这里给出一个简单的实现方法,仅供参考:
```javascript
// 获取市下拉框的数据
function getCityData(provinceName) {
var cityData = [];
for (var i=0; i<data.length; i++) {
if (data[i].name === provinceName) {
cityData = data[i].city;
break;
}
}
return cityData;
}
// 获取区下拉框的数据
function getAreaData(provinceName, cityName) {
var areaData = [];
for (var i=0; i<data.length; i++) {
if (data[i].name === provinceName) {
var cityData = data[i].city;
for (var j=0; j<cityData.length; j++) {
if (cityData[j].name === cityName) {
areaData = cityData[j].area;
break;
}
}
break;
}
}
return areaData;
}
// 绑定市下拉框的数据
function bindCityData(provinceName) {
var citySelect = document.getElementById('city');
citySelect.innerHTML = '';
var cityData = getCityData(provinceName);
for (var i=0; i<cityData.length; i++) {
var option = document.createElement('option');
option.value = cityData[i].name;
option.text = cityData[i].name;
citySelect.appendChild(option);
}
bindAreaData(provinceName, cityData[0].name);
}
// 绑定区下拉框的数据
function bindAreaData(provinceName, cityName) {
var areaSelect = document.getElementById('area');
areaSelect.innerHTML = '';
var areaData = getAreaData(provinceName, cityName);
for (var i=0; i<areaData.length; i++) {
var option = document.createElement('option');
option.value = areaData[i];
option.text = areaData[i];
areaSelect.appendChild(option);
}
}
// 省下拉框改变时的事件处理函数
function onProvinceChange() {
var provinceSelect = document.getElementById('province');
var provinceName = provinceSelect.options[provinceSelect.selectedIndex].value;
bindCityData(provinceName);
}
// 市下拉框改变时的事件处理函数
function onCityChange() {
var provinceSelect = document.getElementById('province');
var provinceName = provinceSelect.options[provinceSelect.selectedIndex].value;
var citySelect = document.getElementById('city');
var cityName = citySelect.options[citySelect.selectedIndex].value;
bindAreaData(provinceName, cityName);
}
// 绑定省下拉框的数据
function bindProvinceData() {
var provinceSelect = document.getElementById('province');
for (var i=0; i<data.length; i++) {
var option = document.createElement('option');
option.value = data[i].name;
option.text = data[i].name;
provinceSelect.appendChild(option);
}
bindCityData(data[0].name);
}
// 页面加载完成时执行的函数
window.onload = function() {
bindProvinceData();
var provinceSelect = document.getElementById('province');
provinceSelect.addEventListener('change', onProvinceChange);
var citySelect = document.getElementById('city');
citySelect.addEventListener('change', onCityChange);
}
```
这段代码中,我们定义了四个函数:getCityData、getAreaData、bindCityData和bindAreaData。这四个函数分别用于获取市、区的数据和绑定市、区的数据。我们还定义了两个事件处理函数:onProvinceChange和onCityChange。当省、市下拉框的选项改变时,分别调用这两个函数,重新绑定相应的数据。最后,我们在页面加载完成时调用bindProvinceData函数,绑定省下拉框的数据,并为省、市下拉框的选项改变事件添加事件监听器。
以上是一个简单的实现过程,仅供参考。实际情况下,还需要根据具体的需求进行修改和完善。
阅读全文