ajax實現三級聯動下拉選單
阿新 • • 發佈:2019-02-01
老師最近給了個小任務,排課系統中,將老師的的課表顯示出來,要用到下拉選單三級聯動,在網上找了很多資料,但是看別人的程式碼太吃力了,只要思路清晰,何不自己動手敲一個出來。這裡別看我的程式碼,看思路就好了。
要求:選擇第一個下拉選單的某個選項之後,第二個下拉選單的選項要隨第一個的選項變化而變化,同理,第三個下拉選單的選項要隨第二個下拉選單選項的變化而變化,三個選單的選項都是從資料庫中讀取。
某個年級某個科目的某個教師
<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最美妙的地方。