利用ajax创建表单联动

实现功能:当选择系别时,该系相关的专业出现在专业中,选中专业后,该专业的学生会显示到学生中

 

1menu.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>

2ajax.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();//初始化urlserverUrl传送的文件。Parms参数

xhr.open("GET",url,true);//打开url

xhr.send(null);//发送请求

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

callBack(xhr);//callback回调函数,自动执行,有名字,函数执行完后会给主程序一个响应

}

}

}

3xi.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;

?>

4zy.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;

?>

5stu.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;

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值