效果如下圖:
思路:先獲取所選省的市或者是所選時的縣,將獲取的數據轉換為jason格式的字符串返回到ajax客戶端,在客戶端使用eval將jason格式的字符串轉化為對象,將對象的每個元素值創建成文本節點,並創建option節點,將文本節點追加到option節點,在將option的節點追加給select節點。
ajax-area-select.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>實現使用ajax+dom+php+mysl 實現三級聯動(省市縣)</title> <script src="Scripts/ajaxUtil.js" language="javascript" type="text/javascript"></script> <script language="javascript" type="text/javascript"> //定義全局變量objectId用來保存select的onchange事件調用的函數傳過來的值(sheng,shi,xian),一邊以後調用select對象用 var objectId=""; //定義函數,獲取數據庫的省份數據 function getArea(id,objid){ objectId=objid; //每次往select節點寫入option前先將原有的option節點清掉(關於這個節點刪除,還有更簡單的方法在我其他文章有) var sel2=document.getElementById(objid); var childS=sel2.childNodes; for(var i=childS.length-1;i>=0;i--){ //alert(childS.length); sel2.removeChild(childS[i]); } //定義url var url="ajax-youku-server.php"; //定義參數 var params="id="+id; //調用ajax 進行交互 get(url,params,processData); } //處理服務器端返回的數據並且顯示 function processData(xhr){ //將服務器端返回的jason格式的字符串轉化為對象 var obj=eval("("+xhr.responseText+")"); //獲取對應objectId(sheng,shi,xian)變量的下拉菜單的對象 var sel1=document.getElementById(objectId); //創建option節點 var op1=document.createElement("option"); //給option加上value屬性並賦值為0 op1.setAttribute("value",0); //創建文本節點text var text=document.createTextNode("----請選擇----"); //將文本節點追加給op1 op1.appendChild(text); //將op1追加給sel1 sel1.appendChild(op1); //在此將jason數組對象的下表為id的作為option的value值,將下表為name的值作為文本節點追加給 for(var i=0;i<obj.length;i++){ var op1=document.createElement("option"); //alert(obj[i].id); op1.setAttribute("value",obj[i].id); //創建文本節點text var text=document.createTextNode(obj[i].name); op1.appendChild(text); sel1.appendChild(op1); //alert(obj[i-1].id+"-"+obj[i-1].name); } } </script> </head> <body onload="getArea('','sheng')"> <div style="border:#006 dashed 1px;"> <select id="sheng" onchange="getArea(this.value,'shi')"></select>省 <select id="shi" onchange="getArea(this.value,'xian')"></select>市 <select id="xian"></select>縣 </div> </body> </html>
ajaxUtil.js
URL:http://www.bianceng.cn/webkf/PHP/201410/45951.htm