來源:http://www.ido321.com/1138.html
接到了老師的一個作業,實現的布局如圖:
如果輸入了科室ID,科室名字只顯示與ID對應的,若沒有輸入,則顯示全部,然後根據I科室名字的值,在所屬大科中的文本框自動顯示科室名字所在的大科。例如:選擇了心血管內科,則在所屬大科顯示內科。
主要代碼如下:
根據ID請求科室
function showHint(str) { var xmlhttp; if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","keshi.php?q="+str,true); xmlhttp.send(); }
keshi.php:
<?php /*防止惡意調用*/ define("TEST",'test'); // 引入文件 include_once 'mysql.func.php'; // 數據庫初始化 connectMySQL(); selectDB(); setZiFuJi(); //獲得來自 URL 的 q 參數 $q=$_GET["q"]; //如果 q 是數字或者數字字符串 if (is_numeric($q)) { $q = intval($q); $hint=""; $resultDKQ = queryDB("select name from table_dake where id=$q"); $hint = '科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">'; while (!!$rowDKQ = fetchAssoc($resultDKQ)) { $hint .= '<optgroup label='.$rowDKQ['name'].'>'; $resultKSQ = queryDB("select table_dake.id,table_keshi.sid,table_keshi.name from table_dake,table_keshi where table_dake.name='{$rowDKQ['name']}' and table_keshi.sid=table_dake.id"); while(!!$rowKSQ = fetchAssoc($resultKSQ)) { $hint .= '<option>'name'].'>'.$rowKSQ['name'].'</option>'; } $hint .= '</optgroup>'; } } // 不是數字 else { $resultDK = queryDB("select table_dake.name from table_dake"); $hint = '科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">'; while (!!$rowDK = fetchAssoc($resultDK)) { $hint .= '<optgroup label='.$rowDK['name'].'>'; $resultKS = queryDB("select table_dake.id,table_keshi.sid,table_keshi.name from table_dake,table_keshi where table_dake.name='{$rowDK['name']}' and table_keshi.sid=table_dake.id"); while(!!$rowKS = fetchAssoc($resultKS)) { $hint .= '<option>'name'].'>'.$rowKS['name'].'</option>'; } $hint .= '</optgroup>'; } } $response=$hint; //輸出響應 echo $response; ?>
效果:
未輸入ID如上圖,輸入ID在下圖:
下一篇:百家搜索:在網站中添加Google、百度等搜索引擎
在S端直接ECHO '字符串';或 EXIT(json_encode(數組));就行了,
每次請求是沒問題的,但是每次請求肯定會有延時。異步的問題只是會有延時,不會存在接收不到返回值的問題,收不到返回值肯定是你哪裡寫錯了。
同時你這個情況我的比較建議一次就把數據都請求過來,存在客戶端這邊,然後根據需要顯示就可以了。
希望對你有幫助!