三級聯動是前端開發中常見的功能之一,通過選擇一個父級選項,來動態獲取子級選項,再根據子級選項的選擇來獲取孫級選項。使用Ajax技術可以很方便地實現三級聯動效果。下面我們來介紹一種基于Ajax的三級聯動實現思路。
首先,我們需要準備好三級級聯的數據。以選擇省-市-區為例,我們可以假設有如下的數據結構:
{ "provinces": [ {"id": 1, "name": "北京"}, {"id": 2, "name": "上海"}, {"id": 3, "name": "廣東"} ], "cities": [ {"id": 11, "name": "北京市", "provinceId": 1}, {"id": 12, "name": "上海市", "provinceId": 2}, {"id": 13, "name": "廣州市", "provinceId": 3}, {"id": 14, "name": "深圳市", "provinceId": 3} ], "areas": [ {"id": 111, "name": "東城區", "cityId": 11}, {"id": 112, "name": "西城區", "cityId": 11}, {"id": 121, "name": "黃浦區", "cityId": 12}, {"id": 131, "name": "天河區", "cityId": 13}, {"id": 132, "name": "越秀區", "cityId": 13}, {"id": 141, "name": "羅湖區", "cityId": 14}, {"id": 142, "name": "福田區", "cityId": 14} ] }
接下來,我們在前端頁面上創建三個下拉框,分別對應省、市、區。我們可以使用HTML的select標簽來實現:
<select id="province"> <option value="">請選擇省份</option> </select> <select id="city"> <option value="">請選擇城市</option> </select> <select id="area"> <option value="">請選擇區域</option> </select>
然后,我們使用JavaScript監聽省份的選擇事件。當省份選擇發生變化時,我們通過Ajax請求獲取對應的城市數據,并根據數據動態添加城市選項:
document.getElementById('province').addEventListener('change', function() { var provinceId = document.getElementById('province').value; if (provinceId !== '') { // 發送Ajax請求獲取城市數據 // 示例省略 var cities = [ {"id": 11, "name": "北京市", "provinceId": 1}, {"id": 12, "name": "上海市", "provinceId": 2}, {"id": 13, "name": "廣州市", "provinceId": 3}, {"id": 14, "name": "深圳市", "provinceId": 3} ]; // 動態生成城市選項 var citySelect = document.getElementById('city'); citySelect.innerHTML = ''; for (var i = 0; i< cities.length; i++) { if (cities[i].provinceId === parseInt(provinceId)) { citySelect.innerHTML += '<option value="' + cities[i].id + '">' + cities[i].name + '</option>'; } } // 清空區域選項 document.getElementById('area').innerHTML = '<option value="">請選擇區域</option>'; } });
最后,我們再監聽城市的選擇事件,當城市選擇發生變化時,再發送Ajax請求獲取對應的區域數據,并根據數據動態添加區域選項:
document.getElementById('city').addEventListener('change', function() { var cityId = document.getElementById('city').value; if (cityId !== '') { // 發送Ajax請求獲取區域數據 // 示例省略 var areas = [ {"id": 111, "name": "東城區", "cityId": 11}, {"id": 112, "name": "西城區", "cityId": 11}, {"id": 121, "name": "黃浦區", "cityId": 12}, {"id": 131, "name": "天河區", "cityId": 13}, {"id": 132, "name": "越秀區", "cityId": 13}, {"id": 141, "name": "羅湖區", "cityId": 14}, {"id": 142, "name": "福田區", "cityId": 14} ]; // 動態生成區域選項 var areaSelect = document.getElementById('area'); areaSelect.innerHTML = ''; for (var i = 0; i< areas.length; i++) { if (areas[i].cityId === parseInt(cityId)) { areaSelect.innerHTML += '<option value="' + areas[i].id + '">' + areas[i].name + '</option>'; } } } });
通過以上的代碼,我們可以實現一個簡單的省市區三級聯動效果。當選擇省份時,相應的城市選項會自動更新;當選擇城市時,相應的區域選項會自動更新。
值得注意的是,為了實現真正的三級聯動,我們需要替換Ajax請求中示例中的數據為實際的接口請求,并將動態生成選項的代碼放在Ajax請求成功的回調函數中。