PHP 实例 - AJAX 实时搜索

在使用 PHP 的时候,可以通过 AJAX 为用户提供更友好、交互性更强的搜索体验。本节给出了具体介绍!

AJAX Live Search

在下面的实例中,我们将演示一个实时的搜索,在您键入数据的同时即可得到搜索结果。

实时的搜索与传统的搜索相比,具有很多优势:

当键入数据时,就会显示出匹配的结果

当继续键入数据时,对结果进行过滤

如果结果太少,删除字符就可以获得更宽的范围

上面实例中的结果在一个 XML 文件(links.xml)中进行查找。为了让这个例子小而简单,我们只提供 6 个结果。

实例解释 - HTML 页面

当用户在上面的输入框中键入字符时,会执行 "showResult()" 函数。该函数由 "onkeyup" 事件触发:

function showResult(str)

{

if (str.length==0)

{

document.getElementById("livesearch").innerHTML="";

document.getElementById("livesearch").style.border="0px";

return;

}

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for 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();

}

源代码解释:

如果输入框是空的(str.length==0),该函数会清空 livesearch 占位符的内容,并退出该函数。

如果输入框不是空的,那么 showResult() 会执行以下步骤:

创建 XMLHttpRequest 对象

创建在服务器响应就绪时执行的函数

向服务器上的文件发送请求

请注意添加到 URL 末端的参数(q)(包含输入框的内容)

PHP 文件

上面这段通过 JavaScript 调用的服务器页面是名为 "livesearch.php" 的 PHP 文件。

"livesearch.php" 中的源代码会搜索 XML 文件中匹配搜索字符串的标题,并返回结果:

$xmlDoc=new DOMDocument();

$xmlDoc->load("links.xml");

$x=$xmlDoc->getElementsByTagName('link');

//get the q parameter from URL

$q=$_GET["q"];

//lookup all links from the xml file if length of q>0

if (strlen($q)>0)

{

$hint="";

for($i=0; $ilength); $i++)

{

$y=$x->item($i)->getElementsByTagName('title');

$z=$x->item($i)->getElementsByTagName('url');

if ($y->item(0)->nodeType==1)

{

//find a link matching the search text

if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))

{

if ($hint=="")

{

$hint="" .

$y->item(0)->childNodes->item(0)->nodeValue . "";

}

else

{

$hint=$hint . "" .

$y->item(0)->childNodes->item(0)->nodeValue . "";

}

}

}

}

}

// Set output to "no suggestion" if no hint were found

// or to the correct values

if ($hint=="")

{

$response="no suggestion";

}

else

{

$response=$hint;

}

//output the response

echo $response;

?>

如果 JavaScript 发送了任何文本(即 strlen($q) > 0),则会发生:

加载 XML 文件到新的 XML DOM 对象

遍历所有的

元素,以便找到匹配 JavaScript 所传文本

在 "$response" 变量中设置正确的 URL 和标题。如果找到多于一个匹配,所有的匹配都会添加到变量。

如果没有找到匹配,则把 $response 变量设置为 "no suggestion"。

php ajax搜索,PHP 与AJAX相关推荐

  1. JAVA ajax搜索框_JS+Ajax实现百度智能搜索框

    首先浏览实现后的结果,输入一个a之后会出现包含a的下拉列表,当我们点击某一个的时候,搜索框中就会出现点击的值.实现所需要的主要是ajax+js. 前端search.jsp pageEncoding=& ...

  2. ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路

    在web开发过程当中,我们经常需要在前台页面输入关键词进行数据的搜索,我们通常使用的搜索方式是将搜索结果用另一个页面显示,这样的方式对于搭建高性能网站来说不是最合适的,今天给大家分享一下如何使用 jq ...

  3. Google AJAX 搜索 API

    链接: 使用Google Custom Search打造站内搜索 文档:http://code.google.com/intl/zh-CN/apis/websearch/docs/ <!DOCT ...

  4. java ajax文字搜素,JAVA-WEB AJAX 搜索条自动提示

    jsp pageEncoding="UTF-8"%> 站内搜索 .xiala{ width: 100px; background-color: #fcfcfc; border ...

  5. wordpress搜索ajax,wordpress ajax搜索提示

    因为我的文章很多,我又会经常查看自己的旧文,所以搜索是我使用频率非常高的一个功能,而且还和微信绑定了搜索结果,所以就更重要了,这两天外出了,晚上才回来,闲着没事,给自己的主题加上了ajax搜索提示,支 ...

  6. 掌握AJAX, 第 9部分: 运用Google Ajax搜索API

    掌握AJAX, 第 9部分: 运用Google Ajax搜索API 本系列英文链接:http://www-128.ibm.com/developerworks/views/web/libraryvie ...

  7. AJAX的安全性及AJAX安全隐患

    Web开发者不会注意到由 "AJAX(Asynchronous JavaScript And XML)"所带来的激情.不费力气就能创建像Google Suggest那样的智能网站或 ...

  8. html5 ajax数据显示,html5的ajax学习(二)

    一.基础知识点 1.ajax可以做事情:局部刷新 浏览器搜索列表记录 加载更多的数据 2.登录页面同步网络请求:页面全部刷新,用户量大体验很不好 3.ajax的详解:ajax的get和post请求 同 ...

  9. ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

    AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...

最新文章

  1. VS2010正式版MSDN下载
  2. 插入始终是1_40分!1分钟4次!大JB太硬了!
  3. JavaScript 对象的遍历以及判断方法
  4. 关于HttpModule
  5. pycharm cant open file_PyCharm
  6. 算术(HDU-6715)
  7. (47)System Verilog数组排序
  8. lua OOP实现对象的链式调用
  9. 五金工具客服快捷回复消息_公众号的自动回复,这样用就能零流失!
  10. 传智播客 机器学习基础 学习笔记
  11. 【html5和css3】animation属性整理
  12. 单片机破 解和防 护建议
  13. MAC 环境变量的加载顺序和设置环境path
  14. 什么是生物质发电?生物质发电有哪些方法?
  15. 正则表达式测试工具使用说明
  16. DOC文档转换成WPS格式要怎样操作
  17. 微信小程序请求php文件报错,微信小程序wx.request请求数据报错
  18. Pikachu靶场之(XSS盲打)
  19. ETABS结构指标查看
  20. 压测⼯具本地快速安装Jmeter5.x以及基础功能组件介绍线程组和Sampler

热门文章

  1. 如何构建一套高性能、高可用性、低成本的视频处理系统?
  2. 【Workshshop No.3 | Kyligence X 青云QingCloud Workshop】零基础搭建云上大数据平台
  3. LiveVideoStackCon讲师热身分享第一季
  4. nginx+upsync+consul 构建动态nginx配置系统
  5. 2017大数据全景图
  6. 无锁链表的c++实现
  7. /etc/sysconfig/network-script/ifcfg-eth0究竟怎么填!!!
  8. Mysql的几个字符串函数【concat、concat_ws、group_concat】
  9. Redis布隆过滤器
  10. leetcode 474. Ones and Zeroes | 474. 一和零(双约束背包问题)