Ajax 调用简介
已发表: 2021-11-01欢迎来到我们的 Ajax 简介! 在本文中,我们将介绍 Ajax 的基础知识以及如何在实际示例中使用它。 我们还将看一个 Ajax-PHP 调用的示例。 尽管我们已尽最大努力简化本教程,但 JavaScript、PHP 和 WordPress 的工作知识对于充分理解以下内容非常重要。 考虑到这一点,让我们开始吧!
什么是阿贾克斯?
Ajax 代表异步 JavaScript 和 XML。
Ajax 不是一种编程语言,而是一系列结合现有 Web 技术以创建更好的 Web 应用程序的技术。
使用 Ajax 改进网站
Ajax 有很多用途。 其中,最重要的功能之一是 Ajax 调用。 Ajax 调用允许网站在用户操作时更新其部分内容,而无需重新加载页面。 因此,与普通的 HTTP 请求相比,我们不必等待服务器响应继续与网站交互。
传统上,HTTP 请求是向 Web 服务器发出的,在它们被处理后,服务器会在新的页面加载中返回更新的输出。 在 Ajax 请求中,这一系列动作在幕后异步发生,因此用户不会被打断。 这提高了交互性和响应能力,并使网站更具活力。
Ajax 如何调用函数?
Ajax 调用始于最终用户在网站前端执行操作(例如,单击按钮)。 执行该操作时,将触发一个 Javascript 事件,并且其侦听器调用一个函数。
在函数内部,Ajax 调用被触发,在 XML 的帮助下,信息被打包,请求被发送到服务器脚本。
注意:如今,几乎在所有情况下,JSON 都比 XML 更受欢迎,因为它更快、更容易阅读和编程等等。
在脚本内部,请求是在服务器端脚本语言(如 PHP、Java、Ruby、Python 等)的帮助下处理的。
响应被发送回客户端,回调函数用接收到的数据更新相应的内容部分。
让我们在一个例子中看看它是如何工作的
一个简单的 Ajax 调用示例
让我们创建一个搜索应用程序,让您在搜索文章标题列表时实时查看搜索结果。
我们将使用 PHP 作为服务器端脚本语言,并从最终用户的角度引导您完成这一过程。
第 1 步:HTML 表单
首先,我们需要一个文本框,用户将在其中填充文本并在某处显示结果。 因此,让我们创建一个简单的 HTML 表单和一个显示结果的元素。
<html> <body> <p><b>Search in articles:</b></p> <form> <input type="text" onkeyup="foundArticles(this.value)"> </form> <p>Articles available: <span></span></p> </body> </html>
第 2 步:Javascript 函数
当用户输入文本时,我们希望看到实时结果(如果有的话)。 我们将使用 onkeyup Javascript 事件,该事件会在用户释放键盘上的键时触发一个函数。
该函数必须获取当前文本作为参数才能继续该过程。
<html> <body> <p><b>Search in articles:</b></p> <form> <input type="text" onkeyup="foundArticles(this.value)"> </form> <p>Articles available: <span></span></p> <script type="text/javascript"> function foundArticles(str) { } </script> </body> </html>
让我们填写函数。
第 3 步:请求
在函数内部,我们首先必须创建一个XMLHttpRequest
对象以便与服务器交互,然后调用另一个函数,该函数将对我们的foundArticles()
函数中传递的值执行一些操作。
在上述过程中,与服务器的交互是通过使用 Javascript XMLHttpRequest.onready
statechange 事件处理程序完成的,该事件处理程序在readyState
属性更改时调用。 让我们进一步澄清这些步骤:
-
readyState
属性返回客户端所处的XMLHttpRequest
状态。 - 每当
readyState
发生变化时,就会触发readystatechange
事件。 -
onreadystatechange
属性包含触发readystatechange
事件时要调用的事件处理程序。
第 4 步:如何处理请求
现在,我们需要在操作完成后做一些事情,在咨询了哪些状态可用后,我们将其设置为状态 4。
因此,当操作完成后,HTML 元素中 id txtHint
的文本应该替换为服务器的响应。 这是我们必须使用responseText
属性的时候,它会在发送请求后返回从服务器接收到的文本。
现在让我们在foundArticles()
函数中添加与我们刚刚描述的内容相对应的代码。
function foundArticles(str) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if ( this.readyState == 4 ) { document.getElementById("txtHint").innerHTML = this.responseText; } } }
注意:我们必须在这里指出,像这样渲染 HTML,而不转义它,在安全方面是不好的做法,我们这样做只是为了本教程的缘故,以便代码尽可能简单。 为了安全起见,请勿将本文中提供的任何代码用于现实世界!
接下来我们必须将请求发送到服务器并使用返回的数据。
第 5 步:数据
在此示例中,数据将存储在 PHP 文件中。 我们在同一文件夹下创建一个data.php
文件并包含以下代码:
<?php // We fill in the posts array with the data to look up to $posts = array( "C Language course", "C++ course", "About Bootstrap", "Learn to write HTML", "All about SS", "CSS3 course", "JAVA course", "JavaScript tutorials", "Learn PHP", "MySQL examples", "Learn Python", "AngularJS", "Photoshop Tutorials", "C#", "ASP.NET", "SAP", "ORACLE", "Wordpress CMS for beginners", "Build your own Android app", "All about SEO", "Illustrator", "Flash", "Action Script" ); // We get the requested value from the URL and store it in a variable $req = $_REQUEST["req"]; $autocomplete = ""; // Iterate $posts if $req is not empty if ($req !== "") { $req = strtolower($req); foreach($posts as $name) { $lowname = strtolower($name); if ( strpos( $lowname , $req ) !== false ) { $autocomplete = $name; } } } // Output echo $autocomplete === "" ? "no suggestion" : $autocomplete;
不要对$req = $_REQUEST["req"];
感到困惑。 线。 这就是脚本如何在custom.js
文件中检索查询的方式,我们稍后会看到。
第 6 步:请求方法
我们将使用XMLHttpRequest
对象的 open() 方法来初始化请求,并使用 send() 方法与服务器交换数据。
我们用于 open() 方法的参数是:
- 方法。 表示 HTTP 请求方法(“GET”、“POST”、“PUT”、“DELETE”等)。
- 将请求发送到的 URL。
function foundArticles(str) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if ( this.readyState == 4 ) { document.getElementById("txtHint").innerHTML = this.responseText; } } xmlhttp.open("GET", "data.php?req=" + str, true); xmlhttp.send(); }
如您所见,open() 方法将 GET 请求初始化为“data.php?req=” + str URL。
然后该 URL 将被 $req = $_REQUEST[“req”]; 使用。 data.php
文件中的变量以检索值。
让我们看一下示例请求的视觉效果:
此时表单应该可以正常工作。 如果你输入,让我们说“课程”这个词,结果应该是:
“C语言课程”,
“C++课程”,
“CSS3课程”,
“JAVA课程”。
结论
这是一个非常简单的 Ajax 请求示例,它是构建网站时使用的一种非常流行的技术。 尽管它很简单,但希望我们能让您更深入地了解此类请求中的路由,这可能会帮助您开始编写自己的代码。 在下一篇文章中,我们将在 WordPress 环境中重温 Ajax,敬请期待!