在網頁開發過程中,選擇省市的時候,省市之間有關聯,這是一個小小的二級聯動案例 ,運用到HTML、css、php、js以及
AJAX的異步請求
首先建立city.php和province.php文件和connet.html,將二級聯動的大概結構寫出來,html代碼如下:
<label>省份:</label><select id="province"> <option>請選擇</option></select><label>城市:</label><select id="city"> <option>請選擇</option></select>
js代碼以及ajax請求如下:
<script>// 通過Ajax從服務器端獲取數據var provinceElement = document.getElementById("province");window.onload = function(){// 創建核心對象 var xhr = getXhr();// 監聽 xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){//吉林省,遼寧省,山東省 var data = xhr.responseText;// 處理數據 var arr = data.split(','); for(var i=0;i<arr.length;i++){// <option>請選擇</option> var opt = document.createElement("option"); var text = document.createTextNode(arr[i]); opt.appendChild(text); provinceElement.appendChild(opt);}}}// 建立連接 xhr.open("get","province.php");// 發送數據 xhr.send(null);}// 2. 用戶選擇不同的省份provinceElement.onchange = function(){// a. 清除城市列表var cityElement = document.getElementById("city");var opts = cityElement.getElementsByTagName("option");for(var i=1;i<opts.length;i++){cityElement.removeChild(opts[i]);i--;}// b. 得到用戶選擇的值(省份)var provinceValue = this.value; if(provinceValue == "請選擇"){ return false;}// c. 通過Ajax根據省份獲取城市var xhr = getXhr();xhr.open("post","city.php");xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send("province="+provinceValue);xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ var data = xhr.responseText; var arr = data.split(","); for(var i=0;i<arr.length;i++){// <option>城市</option> var opt = document.createElement("option"); var text = document.createTextNode(arr[i]); opt.appendChild(text); cityElement.appendChild(opt);}}}}function getXhr(){var xhr = null;if(window.XMLHttpRequest){xhr = new XMLHttpRequest();}else{xhr = new ActiveXObject("Microsoft.XMLHttp");}return xhr;}</script>province.php代碼如下:<?php// 將省份信息進行響應echo '吉林省,遼寧省,山東省';?>city.php代碼如下:
<?php// 1. 接收客戶端的請求數據$province = $_POST['province'];// 2. 根據省份的不同,提供不同的城市switch ($province){case '吉林省':echo '長春市,松原市,白山市,通化市,遼源市';break;case '遼寧省':echo '沈陽市,大連市,錦州市,鐵嶺市,丹東市';break;case '山東省':echo '濟南市,青島市,威海市,日照市,德州市';break;}最終的界面圖如下:

以上所述是小編給大家介紹的省市二級聯動小案例,希望對大家有所幫助,如果大家想了解更多內容,敬請關注武林網!
|
新聞熱點
疑難解答