实现功能:当选择系别时,该系相关的专业出现在专业中,选中专业后,该专业的学生会显示到学生中
1、menu.php
<script language="javascript" type="text/javascript" src="ajax.js">
</script>//引用ajax
<script language="javascript" type="text/javascript">
//选择系
function initdep(){
testXHR("xi.php","",load_dep);//testXHR函数应与ajax.js里的函数名保持一致。load_dep回调函数
}
function load_dep(xhr){//xhr是个保存XMLHttpRequest对象的xhr变量(必须有)
var json=eval("("+xhr.responseText+")");//获取json的内容,json的格式
for(var i=0;i<json.length;i++){
var op_dep=document.createElement("option");//创建一个option节点
op_dep.text=json[i].dep_name;
op_dep.value=json[i].dep_name;
document.getElementById("xi").add(op_dep,null); //add()往option中添加内容
}
}
//选择转业
function load_zy(str){//load_zy(this.value),str就是当前的所选择的系
clear(document.getElementById("stu"));//每次选择系时都需要清空学生
clear(document.getElementById("zy"));//选择系时清空专业
testXHR("zy.php","zy="+encodeURI(str),lzy);
}
function clear(obj){
obj.length=0;
}
function lzy(xhr){
var json=eval("("+xhr.responseText+")");
for(var i=0;i<json.length;i++){
var op_dep=document.createElement("option");
op_dep.text=json[i].stu_zy;
op_dep.value=json[i].stu_zy;
document.getElementById("zy").add(op_dep,null);
}
}
//选择学生
function l_stu(str){
clear(document.getElementById("stu"));
testXHR("stu.php","zy="+encodeURI(str),ls);
}
function clear(obj){
obj.length=0;
}
function ls(xhr){
var json=eval("("+xhr.responseText+")");
for(var i=0;i<json.length;i++){
var op_dep=document.createElement("option");
op_dep.text=json[i].name;
op_dep.value=json[i].name;
document.getElementById("stu").add(op_dep,null);
}
}
</script>
</head>
<body οnlοad="initdep()">
<form action="" method="post">
<select id="xi" οnchange="load_zy(this.value)"><option>--请选择系--</option></select>
<select id="zy" οnchange="l_stu(this.value)"><option>--请选择转业--</option></select>
<select id="stu"><option>--请选择学生--</option></select>
</form>
2、ajax.js
function initXHR(){
function initXHR(){
//判断浏览器的版本
return window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
}
function testXHR(serverUrl,Parms,callBack){
var xhr=initXHR();//初始化XHR
var url=serverUrl+"?"+Parms+"&r="+Math.random();//初始化url。serverUrl传送的文件。Parms参数
xhr.open("GET",url,true);//打开url
xhr.send(null);//发送请求
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
callBack(xhr);//callback回调函数,自动执行,有名字,函数执行完后会给主程序一个响应
}
}
}
3、xi.php
<?php
$link=mysql_connect("localhost","root","123") or die("数据库连接失败");
mysql_select_db("xf",$link);
mysql_query("set names utf8");
$result=mysql_query("select distinct dep_name from department");
//把html的格式转换成json的形式,例如单纯的遍历数组:id=>112,name=>李四,要变成[{stu_name:张三},{stu_name:李四}]格式,而这种格式叫做json数组字面量的格式
$str="";
while($row=mysql_fetch_assoc($result)){
foreach($row as $key=>$v){
$str.="{".$key.':"'.$v.'"},';//构造json为数组字面量,例如str={stu_name:张三},{stu_name:李四},
}
}
$str=rtrim($str,",");//去除最右面的逗号(就是为了构造成json数组字面量的形式)现在变成str={stu_name:张三},{stu_name:李四}
$str="[".$str."]";//在整个json对象外面加上[](就是为了构造成json数组字面量的形式)现在变成str=[{stu_name:张三},{stu_name:李四}]
echo $str;
?>
4、zy.php
<?php
$link=mysql_connect("localhost","root","123") or die("数据库连接失败");
mysql_select_db("xf",$link);
mysql_query("set names utf8");
$result=mysql_query("select stu_zy from department where dep_name like '".$_GET["zy"]."'");
$str="";
while($row=mysql_fetch_assoc($result)){
foreach($row as $key=>$v){
$str.="{".$key.':"'.$v.'"},';
}
}
$str=rtrim($str,",");
$str="[".$str."]";
echo $str;
?>
5、stu.php
<?php
$link=mysql_connect("localhost","root","123") or die("数据库连接失败");
mysql_select_db("xf",$link);
mysql_query("set names utf8");
$result=mysql_query("select stu_id,stu_name from stuinfo s join department d on s.stu_zy=d.stu_zy where d.stu_zy like'".$_GET["zy"]."'");
$str="";
while($row=mysql_fetch_assoc($result)){
$str.='{'.'id:"'.$row["stu_id"].'",name:"'.$row["stu_name"].'"},';
}
$str=rtrim($str,",");
$str="[".$str."]";
echo $str;
?>