PHP - AJAX 与 PHP
AJAX 用于创建更具交互性的应用程序。
AJAX PHP 示例
下例将演示当用户在一个输入字段中键入字符时,网页如何与 Web 服务器进行通信:
实例
请开始在以下输入字段中键入名称:
建议:
例子解释
在上面的例子中,当用户在输入字段中键入字符时,会执行一个名为 showHint()
的函数。
该函数由 onkeyup
事件触发。
这是 HTML 代码:
实例
<html> <head> <script> function showHint(str) { if (str.length == 0) { document.getElementById("txtHint").innerHTML = ""; return; } else { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("txtHint").innerHTML = this.responseText; } }; xmlhttp.open("GET", "gethint.php?q=" + str, true); xmlhttp.send(); } } </script> </head> <body> <p><b>Start typing a name in the input field below:</b></p> <form action=""> <label for="fname">First name:</label> <input type="text" id="fname" name="fname" onkeyup="showHint(this.value)"> </form> <p>Suggestions: <span id="txtHint"></span></p> </body> </html>
代码解释:
首先,检查输入字段是否为空(str.length == 0)。如果为空,则清除 txtHint 占位符的内容并退出函数。
但是,如果输入字段不为空,请执行以下操作:
- 创建一个
XMLHttpRequest
对象 - 创建服务器响应就绪时要执行的函数
- 将请求发送到服务器上的 PHP 文件(
gethint.php
) - 请注意,
q
参数已添加到 url(gethint.php?q=" + str
) - 同时
str
变量包含输入字段的内容
PHP 文件 - "gethint.php"
PHP 文件会检查名字数组,并将相应的名字返回给浏览器:
gethint.php
// 包含名字的数组 $a[] = "Anna"; $a[] = "Brittany"; $a[] = "Cinderella"; $a[] = "Diana"; $a[] = "Eva"; $a[] = "Fiona"; $a[] = "Gunda"; $a[] = "Hege"; $a[] = "Inga"; $a[] = "Johanna"; $a[] = "Kitty"; $a[] = "Linda"; $a[] = "Nina"; $a[] = "Ophelia"; $a[] = "Petunia"; $a[] = "Amanda"; $a[] = "Raquel"; $a[] = "Cindy"; $a[] = "Doris"; $a[] = "Eve"; $a[] = "Evita"; $a[] = "Sunniva"; $a[] = "Tove"; $a[] = "Unni"; $a[] = "Violet"; $a[] = "Liza"; $a[] = "Elizabeth"; $a[] = "Ellen"; $a[] = "Wenche"; $a[] = "Vicky"; // 从 URL 获取 q 参数 $q = $_REQUEST["q"]; $hint = ""; // 如果 $q 不等于 "",则从数组中查找所有提示 if ($q !== "") { $q = strtolower($q); $len=strlen($q); foreach($a as $name) { if (stristr($q, substr($name, 0, $len))) { if ($hint === "") { $hint = $name; } else { $hint .= ", $name"; } } } } // 如果没有找到提示,则输出“无建议”,否则输出正确的值 echo $hint === "" ? "无建议" : $hint;