当前位置 : IT培训网 > PHP开发 > php教程 > PHP实战教程之AJAX实时搜索

PHP实战教程之AJAX实时搜索

时间:2016-12-08 10:43:14  来源:php培训网  作者:郑州IT培训网  已有:名学员访问该课程
今天IT培训网小编给大家分享的是PHP实战教程之AJAX实时搜索,只有拥有真才实干才能在竞争中脱颖而出。

今天IT培训网小编给大家分享的是PHP实战教程之AJAX实时搜索,只有拥有真才实干才能在竞争中脱颖而出。

AJAX 可为用户提供更友好、交互性更强的搜索体验。

AJAX Live Search

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

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

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

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

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

在下面的文本框中输入 "HTML",搜索包含 HTML 的页面:

 

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

实例解释 - 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"。

PHP实战教程为大家分享的是PHP基础知识实例,勤学勤练习,这是学习编程最简单也是最有效的方式。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
PHP 教程
1、PHP 基础
1.1 PHP 简介
1.2 PHP 安装
1.3 PHP 语法
1.4 PHP 变量
1.5 PHP echo/print
1.6 PHP 数据类型
1.7 PHP 常量
1.8 PHP 字符串
1.9 PHP 运算符
1.10 PHP If...Else
1.11 PHP Switch
1.12 PHP 数组
1.13 PHP 数组排序
1.14 PHP 超级全局变量
1.15 PHP While 循环
1.16 PHP For 循环
1.17 PHP 函数
1.18 PHP 魔术变量
1.19 PHP 命名空间
1.20 PHP 面向对象
2、PHP 表单
2.1 PHP 表单
2.2 PHP 表单验证
2.3 PHP 表单 - 必需字段
2.4 PHP 表单 - 验证邮件和URL
2.5 PHP 完整表单实例
2.6 PHP $_GET 变量
2.7 PHP $_POST 变量
3、PHP 高级教程
3.1 PHP 多维数组
3.2 PHP 日期
3.3 PHP 包含
3.4 PHP 文件
3.5 PHP 文件上传
3.6 PHP Cookie
3.7 PHP Session
3.8 PHP E-mail
3.9 PHP 安全 E-mail
3.10 PHP Error
3.11 PHP 过滤器
3.12 PHP 高级过滤器
3.13 PHP JSON
4、PHP 7 新特性
4.1 PHP 7 新特性
5、PHP 数据库
5.1 PHP MySQL 简介
5.2 PHP MySQL 连接
5.3 PHP MySQL 创建数据库
5.4 PHP MySQL 创建数据表
5.5 PHP MySQL 插入数据
5.6 PHP MySQL 插入多条数据
5.7 PHP MySQL 预处理语句
5.8 PHP MySQL 读取数据
5.9 PHP MySQL Where
5.10 PHP MySQL Order By
5.11 PHP MySQL Update
5.12 PHP MySQL Delete
5.13 PHP ODBC
6、PHP XML
6.1 XML Expat Parser
6.2 XML DOM
6.3 XML SimpleXML
7、PHP 与 AJAX
7.1 AJAX 简介
7.2 AJAX 与PHP
7.3 AJAX 数据库
7.4 AJAX XML
7.5 AJAX 实时搜索
7.6 AJAX RSS Reader
7.7 AJAX 投票