PHP——AJAX 实时搜索
来源:互联网 发布:switch case语句 php 编辑:程序博客网 时间:2024/05/29 19:51
PHP 实例 - AJAX 实时搜索
AJAX 可为用户提供更友好、交互性更强的搜索体验。
AJAX Live Search
在下面的实例中,我们将演示一个实时的搜索,在您键入数据的同时即可得到搜索结果。
实时的搜索与传统的搜索相比,具有很多优势:
- 当键入数据时,就会显示出匹配的结果
- 当继续键入数据时,对结果进行过滤
- 如果结果太少,删除字符就可以获得更宽的范围
实例解释 - HTML 页面
当用户在上面的输入框中键入字符时,会执行 "showResult()" 函数。该函数由 "onkeyup" 事件触发:
<html><head><script>function showResult(str){if (str.length==0){ document.getElementById("livesearch").innerHTML="";document.getElementById("livesearch").style.border="0px";return;}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("livesearch").innerHTML=xmlhttp.responseText;document.getElementById("livesearch").style.border="1px solid #A5ACB2";}}xmlhttp.open("GET","livesearch.php?q="+str,true);xmlhttp.send();}</script></head><body><form><input type="text" size="30" onkeyup="showResult(this.value)"><div id="livesearch"></div></form></body></html>
源代码解释:
如果输入框是空的(str.length==0),该函数会清空 livesearch 占位符的内容,并退出该函数。
如果输入框不是空的,那么 showResult() 会执行以下步骤:
- 创建 XMLHttpRequest 对象
- 创建在服务器响应就绪时执行的函数
- 向服务器上的文件发送请求
- 请注意添加到 URL 末端的参数(q)(包含输入框的内容)
PHP 文件
上面这段通过 JavaScript 调用的服务器页面是名为 "livesearch.php" 的 PHP 文件。
"livesearch.php" 中的源代码会搜索 XML 文件中匹配搜索字符串的标题,并返回结果:
<?php$xmlDoc=new DOMDocument();$xmlDoc->load("links.xml");$x=$xmlDoc->getElementsByTagName('link');// 从 URL 中获取参数 q 的值$q=$_GET["q"];// 如果 q 参数存在则从 xml 文件中查找数据if (strlen($q)>0){$hint="";for($i=0; $i<($x->length); $i++){$y=$x->item($i)->getElementsByTagName('title');$z=$x->item($i)->getElementsByTagName('url');if ($y->item(0)->nodeType==1){// 找到匹配搜索的链接if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)){if ($hint==""){$hint="<a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>";}else{$hint=$hint . "<br /><a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>";}}}}}// 如果没找到则返回 "no suggestion"if ($hint==""){$response="no suggestion";}else{$response=$hint;}// 输出结果echo $response;?>
如果 JavaScript 发送了任何文本(即 strlen($q) > 0),则会发生:
- 加载 XML 文件到新的 XML DOM 对象
- 遍历所有的 <title> 元素,以便找到匹配 JavaScript 所传文本
- 在 "$response" 变量中设置正确的 URL 和标题。如果找到多于一个匹配,所有的匹配都会添加到变量。
- 如果没有找到匹配,则把 $response 变量设置为 "no suggestion"。
0 0
- PHP——AJAX 实时搜索
- PHP & AJAX 实时搜索
- [php学习六]AJAX练习3-实时搜索
- Ajax实时搜索
- 第37篇 一对多自由控制语音(十七)及PHP 实例- AJAX 实时搜索
- php ajax 实时显示时间
- php与ajax交互——实现php实时返回结果给ajax,并在后台保持继续运行的方法
- PHP+Ajax实时自动检测是否联网
- php & ajax 小例子——仿百度搜索自动完成下拉框
- 做动态搜索实时显示(ajax)时,乱跑之故障
- 解决实时搜索发送ajax请求过多的问题
- PHP——实时显示当前时间
- PHP+AJAX实现表格实时编辑(慕课网PHP课程)
- 实时的分布式搜索和分析引擎——Elasticsearch
- 实时搜索
- 实时搜索
- 利用php+javascript打造ajax搜索窗
- 利用php+javascript打造ajax搜索窗
- 矢量化编程
- Spring MVC 下设置默认访问页面的3种方式
- 1.4参数传递与返回值(1)
- 利用PHPMailerAutoLoad发邮件
- sql之left join、right join、inner join的区别
- PHP——AJAX 实时搜索
- studio 签名apk配置,方便第三方登录,支付等测试
- android中如何使用 XRecyclerView
- Log4Net使用详解(续)
- HashMap多线程不安全
- 阻塞与非阻塞 异步非阻塞
- 交互设计师必备书单
- UBUNTU的默认root密码是多少
- iOS中使用RSA加解密