省市县联动结合Promise使用

// 获取省份列表
function getProvinceList() {
  return new Promise((resolve, reject) => {
    axios.get('http://example.com/api/provinces')
      .then((response) => {
        resolve(response.data);
      })
      .catch((error) => {
        reject(error);
      });
  });
}

// 获取城市列表
function getCityList(provinceId) {
  return new Promise((resolve, reject) => {
    axios.get(`http://example.com/api/cities?provinceId=${provinceId}`)
      .then((response) => {
        resolve(response.data);
      })
      .catch((error) => {
        reject(error);
      });
  });
}

// 获取区县列表
function getCountyList(cityId) {
  return new Promise((resolve, reject) => {
    axios.get(`http://example.com/api/counties?cityId=${cityId}`)
      .then((response) => {
        resolve(response.data);
      })
      .catch((error) => {
        reject(error);
      });
  });
}

// 加载省份列表
getProvinceList()
  .then((provinceList) => {
    // 将省份列表添加到 select 元素中
    const selectProvince = document.getElementById('province');
    provinceList.forEach((province) => {
      const option = document.createElement('option');
      option.value = province.id;
      option.text = province.name;
      selectProvince.appendChild(option);
    });
  })
  .catch((error) => {
    console.error(error);
  });

// 当省份 select 元素的值改变时,重新加载城市列表
document.getElementById('province').addEventListener('change', (event) => {
  const provinceId = event.target.value;
  // 加载城市列表
  getCityList(provinceId)
    .then((cityList) => {
      // 将城市列表添加到 select 元素中
      const selectCity = document.getElementById('city');
      selectCity.innerHTML = ''; // 清空城市 select 元素的选项
      cityList.forEach((city) => {
        const option = document.createElement('option');
        option.value = city.id;
        option.text = city.name;
        selectCity.appendChild(option);
      });
    })
    .catch((error) => {
      console.error(error);
    });
});

// 当城市 select 元素的值改变时,重新加载区县列表
document.getElementById('city').addEventListener('change', (event) => {
  const cityId = event.target.value;
  // 加载区县列表
  getCountyList(cityId)
    .then((countyList) => {
      // 将区县列表添加到 select 元素中
      const selectCounty = document.getElementById('county');
      selectCounty.innerHTML = ''; // 清空区县 select 元素的选项
      countyList.forEach((county) => {
        const option = document.createElement('option');
        option.value = county.id;
        option.text = county.name;
        selectCounty.appendChild(option);
      });
    })
    .catch((error) => {
      console.error(error);
    });
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值