1. 程式人生 > >ajax實現三級聯動下拉選單

ajax實現三級聯動下拉選單

  老師最近給了個小任務,排課系統中,將老師的的課表顯示出來,要用到下拉選單三級聯動,在網上找了很多資料,但是看別人的程式碼太吃力了,只要思路清晰,何不自己動手敲一個出來。這裡別看我的程式碼,看思路就好了。 要求:選擇第一個下拉選單的某個選項之後,第二個下拉選單的選項要隨第一個的選項變化而變化,同理,第三個下拉選單的選項要隨第二個下拉選單選項的變化而變化,三個選單的選項都是從資料庫中讀取。      某個年級某個科目的某個教師 <body>     <div>         <select id="class" name="class" onchange="showcourse(this.value)">
        <option value="" selected="selected">選擇年級</option>             <?php  showclass(); ?>         </select>         <select id="course" name="course"onchange="showteacher(this.value)">             <option value="" selected="selected">選擇科目</option>         </select>
        <select id="teacher" name="teacher" onchange="showtable(this.value  )">             <option value="" selected="selected">選擇教師</option>         </select>     </div>     <div id="showcourse"></div> </body> 一、 主思路:1、先弄好前端顯示頁面。               2、年級下拉選單通過php檔案直接從資料庫中讀取所有的年級               3、選中年級選項的時候,觸發事件,showcourse()函式通過年級下拉選單選項確定科目下拉選單的選項               4、選中科目選項的時候,觸發事件,showteacher()函式通過科目下拉選單選項確定教師下拉選單的選項               5、選中教師選項的時候,出發時間,showtable()函式通過教師下拉選單選項輸出該教師的課程表 二、        上面的主思路中,第2步很容易解決,直接寫個php指令碼,連結資料庫,然後從資料庫中取出所有年級,然後在前端通過showclass()函式顯示出來;        那麼第3步該怎麼解決呢?當選中年級選項的時候,觸發showcourse()事件,該事件通過ajax實現,程式碼如下: function showcourse(str){
var xmlhttp; if(window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else{ xmlhttp = new ActiveXObject(); }      xmlhttp.onreadystatechange=function()        {               if (xmlhttp.readyState==4 && xmlhttp.status==200)               {                     document.getElementById("course").innerHTML=xmlhttp.responseText;               }         }      xmlhttp.open("GET","showcourse.php?="+str,true);      xmlhttp.send(); }        showcourse.php檔案根據傳過來的str引數(該引數就是選擇的年級所對應的的value)從資料庫中檢索該年級所有的科目,然後傳回給ajax,通過document.getElementById("course").innerHTML=xmlhttp.responseText在前端顯示出來。  然後第4步、第5步都跟上面一樣的處理過程。而且,用ajax更大的好處是,檢視不同教師的課表時不用重新整理整個頁面,而是區域性重新整理資料,這也是ajax最美妙的地方。