PHP 实例 - AJAX 实时搜索

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

AJAX Live Search

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

实时的搜索与传统的搜索相比,具有很多优势: 当键入数据时,就会显示出匹配的结果

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

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

在下面的文本框中搜索 W3CSchool 的页面

上面实例中的结果在一个 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 文件中匹配搜索字符串的标题,并返回结果:<?php

$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. ElasticSearch近实时搜索的实现

    ElasticSearch近实时搜索的实现 1.近实时搜索 1.1 实时与近实时 实时搜索(Real-time Search)很好理解,对于一个数据库系统,执行插入以后立刻就能搜索到刚刚插入到数据.而 ...

  2. js中的json ajax,js结合json实现ajax简单实例

    这篇文章主要为大家详细介绍了js结合json实现ajax简单实例的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前期准备 1.安装wampserver或者其他相似软件来搭建本地集成安装环 ...

  3. ajax资料收集-Ajax文章(教程和实例)---Ajax资源下载(源码和教程)---Ajax规范标准

    CSDN Blog Ajax文章搜索: http://search.csdn.net/search/ajax/1/blog/ 专题:Ajax技术应用开发 http://www.51cto.com/ht ...

  4. ajax php计数,jQuery+PHP+Ajax动态数字统计展示实例

    jQuery+PHP+Ajax实现的一款动态数字统计展示实例,本例是在页面上动态展示了当前在线用户数,当然了,你可以应用到其他更多场景中. 首先我们在#number放置要统计的数字: 当前在线: - ...

  5. php 请求拦截,解决拦截器对ajax请求的拦截实例详解

    解决拦截器对ajax请求的的拦截 拦截器配置:public boolean preHandle(HttpServletRequest request, HttpServletResponse resp ...

  6. ajax 示例代码,Ajax的简单实用实例代码

    我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图: 实现主要过程: 在UsersAction类中的checkUser方法中接收并验证前台的表单数据,针对不同情况,返回一个状态码cod ...

  7. AJAX ASP/PHP 请求实例

    AJAX ASP/PHP 请求实例 ·                          Previous Page ·                          Next Page AJAX ...

  8. 二级联动菜单ajax刷新,jquery json ajax 二级联动菜单实例

    本文实例讲述了jquery json ajax 二级联动菜单.分享给码农们参考,具体如下: 后台Handler.ashx using System; using System.Web; using S ...

  9. ajax php 投票,PHP 实例 AJAX 投票

    PHP 实例 - AJAX 投票 AJAX 投票 在下面的实例中,我们将演示一个投票程序,通过它,投票结果在网页不进行刷新的情况下被显示. 你喜欢 PHP 和 AJAX 吗? 是: 否: 实例解释 - ...

最新文章

  1. html5 微格式,HTML5抢鲜:微格式及相关的属性名称。
  2. 干掉 FastJson
  3. JavaScript中的常量:什么时候使用它,有必要吗?
  4. 成功解决pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档保存失败。', '', 3011, -214746725
  5. SOCKET通信的基本步骤
  6. java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间
  7. IOS自动化打包平台
  8. Linux工作笔记-查看某程序安装路径及可执行文件相关链接库
  9. 文档浏览网站 Docs4dev,内含Spring、SpringBoot、Spring Data等中英文文档
  10. jdk5.0的新特性
  11. 指针运算符 * 说明
  12. python select
  13. 《Django实战系列》
  14. UINavigationController 基本用法
  15. SQLite的SQL语法
  16. php超小免杀大马_php大马免杀技巧 | bypass waf
  17. Matlab中的两种曲线平滑函数
  18. arduino SIM868发送post请求到服务器,解决只能成功发送一次的问题
  19. ftp服务器修改默认端口,FTP原理和修改FTP默认端口
  20. 搭建zabbix监控及邮件报警

热门文章

  1. 抛物型方程向前差分matlab,(整理)微分方程数值解(学生复习题).
  2. Struts2框架学习之一:Hello World程序
  3. win7计算机用户配置文件存储路径,Win7用户配置文件夹位置怎么修改?
  4. Intel 加速分布式计算系统的三个神器
  5. 【05】CC - 格式
  6. 异常:The supplied data appears to be in the Office 2007+ XML
  7. LeetCode简单题目(#160 #167 #168 #169 #171)-5道(序列、数字)
  8. mysql清理死链接_对MySQL的死连接Sleep的进程的来源研究
  9. mysql数据没有同步更新_MySQL数据库主从没有同步的两种解决方案
  10. 嘉兴 机器人仓库 菜鸟_“199”机器人火了,天猫双11,有1亿人次“云监工”物流发货...