AJAX PHP 实例

AJAX 用于创建更具交互性的应用程序。

AJAX PHP 实例

下面的例子演示:当用户在输入字段中键入字符时,网页如何与 web 服务器进行通信:

实例

  1. <html>
  2. <head>
  3. <script>
  4. function showHint(str) {
  5. if (str.length == 0) {
  6. document.getElementById("txtHint").innerHTML = "";
  7. return;
  8. } else {
  9. var xmlhttp = new XMLHttpRequest();
  10. xmlhttp.onreadystatechange = function() {
  11. if (this.readyState == 4 && this.status == 200) {
  12. document.getElementById("txtHint").innerHTML = this.responseText;
  13. }
  14. };
  15. xmlhttp.open("GET", "gethint.php?q=" + str, true);
  16. xmlhttp.send();
  17. }
  18. }
  19. </script>
  20. </head>
  21. <body>
  22.  
  23. <p><b>请在下面的输入字段中键入姓名:</b></p>
  24. <form>
  25. 姓或名:<input type="text" onkeyup="showHint(this.value)">
  26. </form>
  27. <p>建议:<span id="txtHint"></span></p>
  28. </body>
  29. </html>

例子解释

在上面的例子中,当用户在输入字段中键入字符时,会执行名为 "showHint()" 的函数。

此函数被 onkeyup 事件触发。

代码解释:

首先,检查输入字段是否为空(str.length == 0),如果是,清空 txtHint 占位符的内容并退出函数。

不过,如果输入字段不为空,则进行如下:

  • 创建 XMLHttpRequest 对象
  • 创建当服务器响应就绪时执行的函数
  • 发送请求到服务器上的 PHP 文件(gethint.php)
  • 请注意添加到 gethint.php 的 q 参数
  • str 变量保存了输入字段的内容

PHP 文件 - "gethint.php"

这个 PHP 文件检查姓名数组,然后向浏览器返回对应的姓名:

  1. <?php
  2. // 姓名数组
  3. $a[] = "Ava";
  4. $a[] = "Brielle";
  5. $a[] = "Caroline";
  6. $a[] = "Diana";
  7. $a[] = "Elise";
  8. $a[] = "Fiona";
  9. $a[] = "Grace";
  10. $a[] = "Hannah";
  11. $a[] = "Ileana";
  12. $a[] = "Jane";
  13. $a[] = "Kathryn";
  14. $a[] = "Laura";
  15. $a[] = "Millie";
  16. $a[] = "Nancy";
  17. $a[] = "Opal";
  18. $a[] = "Petty";
  19. $a[] = "Queenie";
  20. $a[] = "Rose";
  21. $a[] = "Shirley";
  22. $a[] = "Tiffany";
  23. $a[] = "Ursula";
  24. $a[] = "Victoria";
  25. $a[] = "Wendy";
  26. $a[] = "Xenia";
  27. $a[] = "Yvette";
  28. $a[] = "Zoe";
  29. $a[] = "Angell";
  30. $a[] = "Adele";
  31. $a[] = "Beatty";
  32. $a[] = "Carlton";
  33. $a[] = "Elisabeth";
  34. $a[] = "Violet";
  35.  
  36. // 从 URL 获取 q 参数
  37. $q = $_REQUEST["q"];
  38.  
  39. $hint = "";
  40.  
  41. // 查看数组中所有 hint,$q 是否与 "" 相同
  42. if ($q !== "") {
  43. $q = strtolower($q);
  44. $len=strlen($q);
  45. foreach($a as $name) {
  46. if (stristr($q, substr($name, 0, $len))) {
  47. if ($hint === "") {
  48. $hint = $name;
  49. } else {
  50. $hint .= ", $name";
  51. }
  52. }
  53. }
  54. }
  55.  
  56. // 输出 "no suggestion",如果未找到 hint 或输出正确的值
  57. echo $hint === "" ? "no suggestion" : $hint;
  58. ?>