AJAX(Asynchronous JavaScript and XML)是一种创建交互式网页应用的技术。它使用 JavaScript 和 XML 来向服务器发送请求,从而不必重新加载整个页面。AJAX 可以让你在不重新加载整个页面的情况下更新部分内容。
PHP 是一种常用的服务器端脚本语言,可以用来处理 AJAX 请求。PHP 可以处理 AJAX 请求并返回 JSON 数据,这样 JavaScript 就可以使用这些数据来更新网页内容。
要使用 PHP 和 AJAX 来实现交互式网页应用,你必须先创建一个 HTML 页面,然后在其中包含一个 JavaScript 脚本来处理 AJAX 请求。JavaScript 脚本会发送 AJAX 请求到 PHP 页面,PHP 页面会处理请求并返回 JSON 数据。JavaScript 脚本会使用这些数据来更新 HTML 页面的内容。
//HTML 部分 <html> <head> <script type="text/javascript" src="ajax.js"></script> </head> <body onload="loadData()"> <div id="data">Loading...</div> <script type="text/javascript" src="ajax.js"> </script> </body> </html>; //JavaScript 部分 function loadData() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("data").innerHTML = this.responseText ; } }; xhttp.open("GET", "data.php", true); xhttp.send(); } ;
//PHP 部分 $data = array( 'name' => 'John', 'age' => 30, 'city' => 'New York' ); echo json_encode($data);
在使用 PHP 的时候,可以通过 AJAX 为用户提供更友好、交互性更强的搜索体验。本节给出了具体介绍!
在下面的实例中,我们将演示一个实时的搜索,在您键入数据的同时即可得到搜索结果。
实时的搜索与传统的搜索相比,具有很多优势:
在下面的文本框中搜索 W3CSchool 的页面
上面实例中的结果在一个 XML 文件(links.xml)中进行查找。为了让这个例子小而简单,我们只提供 6 个结果。
当用户在上面的输入框中键入字符时,会执行 "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)
{// 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();
}
</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() 会执行以下步骤:
上面这段通过 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; $i<($x->length); $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="<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>";
}
}
}
}
}
// 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),则会发生:
有时,为了避免 if 语句过于冗长,提高程序的可读性,可以使用 switch 分支控制语句。switch 语句用于根据多个不同条件执行不同...
在 PHP 中,有些字段不能为空且必须在 HTML 表单中填写。本章节我们将介绍如何设置表单必需字段及错误信息。PHP - 必需字段在上...
我们在上一节内容中已经介绍过 PHP 发送电子邮件的方式了,但是在上一节中的 PHP e-mail 脚本中,存在着一个漏洞,接下来我们一...
常量值被定义后,在脚本的其他任何地方都不能被改变。 PHP 常量 常量是一个简单值的标识符。该值在脚本中不能改变。一个常量由英...
本节介绍了 PHP 中需要使用到的 String函数,我们对这些函数进行了相关的描述! PHP String 函数是 PHP 核心的组成部分。无需安...