来源:http://www.ido321.com/1138.html
接到了老师的一个作业,实现的布局如图:
如果输入了科室ID,科室名字只显示与ID对应的,若没有输入,则显示全部,然后根据I科室名字的值,在所属大科中的文本框自动显示科室名字所在的大科。例如:选择了心血管内科,则在所属大科显示内科。
主要代码如下:
立即学习“PHP免费学习笔记(深入)”;
根据ID请求科室
<span>function</span><span> showHint(str)
{
<span>var</span> xmlhttp;
<span>if</span> (window.XMLHttpRequest)
{<span>// IE7+, Firefox, Chrome, Opera, Safari</span>
xmlhttp=<span>new</span> XMLHttpRequest();
}
<span>else</span>
{<span>// IE6, IE5</span>
xmlhttp=<span>new</span> ActiveXObject(<span>"Microsoft.XMLHTTP"</span>);
}
xmlhttp.onreadystatechange=<span>function</span>()
{
<span>if</span> (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(<span>"txtHint"</span>).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open(<span>"GET"</span>,<span>"keshi.php?q="</span>+str,<span>true</span>);
xmlhttp.send();
}</span>keshi.php:
<span><?php
<span>/*防止恶意调用*/</span>
define(<span>"TEST"</span>,<span>'test'</span>);
<span>// 引入文件</span>
<span>include_once</span> <span>'mysql.func.php'</span>;
<span>// 数据库初始化</span>
connectMySQL();
selectDB();
setZiFuJi();
<span>//获得来自 URL 的 q 参数</span>
$q=$_GET[<span>"q"</span>];
<span>//如果 q 是数字或者数字字符串</span>
<span>if</span> (is_numeric($q))
{
$q = intval($q);
$hint=<span>""</span>;
$resultDKQ = queryDB(<span>"select name from table_dake where id=$q"</span>);
$hint = <span>'科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">'</span>;
<span>while</span> (!!$rowDKQ = fetchAssoc($resultDKQ))
{
$hint .= <span>'<optgroup label='</span>.$rowDKQ[<span>'name'</span>].<span>'>'</span>;
$resultKSQ = queryDB(<span>"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"</span>);
<span>while</span>(!!$rowKSQ = fetchAssoc($resultKSQ))
{
$hint .= <span>'<option>'name'</span>].<span>'>'</span>.$rowKSQ[<span>'name'</span>].<span>'</option>'</span>;
}
$hint .= <span>'</optgroup>'</span>;
}
}
<span>// 不是数字</span>
<span>else</span>
{
$resultDK = queryDB(<span>"select table_dake.name from table_dake"</span>);
$hint = <span>'科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">'</span>;
<span>while</span> (!!$rowDK = fetchAssoc($resultDK))
{
$hint .= <span>'<optgroup label='</span>.$rowDK[<span>'name'</span>].<span>'>'</span>;
$resultKS = queryDB(<span>"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"</span>);
<span>while</span>(!!$rowKS = fetchAssoc($resultKS))
{
$hint .= <span>'<option>'name'</span>].<span>'>'</span>.$rowKS[<span>'name'</span>].<span>'</option>'</span>;
}
$hint .= <span>'</optgroup>'</span>;
}
}
$response=$hint;
<span>//输出响应</span>
<span>echo</span> $response;
?></span>
效果:
未输入ID如上图,输入ID在下图:
下一篇:百家搜索:在网站中添加Google、百度等搜索引擎
在S端直接ECHO '字符串';或 EXIT(json_encode(数组));就行了,
每次请求是没问题的,但是每次请求肯定会有延时。异步的问题只是会有延时,不会存在接收不到返回值的问题,收不到返回值肯定是你哪里写错了。
同时你这个情况我的比较建议一次就把数据都请求过来,存在客户端这边,然后根据需要显示就可以了。
希望对你有帮助!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号