程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php+js+ajax+mysql實現省市三級聯動

php+js+ajax+mysql實現省市三級聯動

編輯:PHP綜合

效果如下圖:

思路:先獲取所選省的市或者是所選時的縣,將獲取的數據轉換為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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved