AJAX 的核心价值,就在于让网页应用变得更灵动、更流畅。它打破了传统网页“点击-刷新-等待”的循环,让页面可以在不进行整体刷新的情况下,与服务器悄悄交换数据,然后局部更新自己。这也就是我们常说的“无刷新”体验,很多交互性强的应用,比如实时搜索提示、在线聊天,背后都离不开它。
AJAX PHP 实例
光说概念可能有点抽象,咱们来看一个具体的例子。这个例子模拟了一个很常见的场景:用户在输入框里键入字符时,页面会立刻与服务器通信,返回匹配的姓名建议。
实例
试着在下面的输入框中敲一个名字,比如“Anna”:
姓名:
返回值:
实例背后的逻辑 - HTML 页面
当你敲击键盘时,触发的是一个叫 showHint() 的函数,它由输入框的 onkeyup 事件来驱动。这个函数就是整个流程的“总指挥”。
代码看起来是这样的:
在输入框中输入一个姓名:
返回值:
咱们来拆解一下这个函数都干了什么:
第一,它会判断输入框是否为空。如果用户什么都没敲(str.length==0),那就直接把提示区域清空,然后退出,不必做多余的操作。
第二,如果输入框里有内容,它就开始干活了:
- 创建一个
XMLHttpRequest对象,这是AJAX的核心工具。 - 定义好一个回调函数,等服务器响应回来后,这个函数会自动执行。
- 向服务器上的一个PHP文件(
gethint.php)发送请求。注意,请求的URL后面加上了?q=参数,这个参数里装的就是输入框里的内容。
PHP 文件 - 服务器端的处理
刚才Ja vaScript调用的服务器端页面,是名为 gethint.php 的PHP文件。它的工作很简单:接收请求,查找匹配,然后返回结果。
它的代码逻辑是这样的:
0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i
简单来说,这个过程是这样的:
- 首先,PHP会检查Ja vaScript发送过来的
q参数是否为空。 - 如果参数不为空,它就会遍历内置的姓名数组,查找以输入字符开头的所有姓名。
- 如果没找到任何匹配,它就把响应字符串设置为
"no suggestion"。 - 如果找到了一个或多个匹配的姓名,它就把这些姓名用逗号拼接起来,作为响应字符串。
- 最后,把这个响应字符串通过
echo输出,发送回页面上的txtHint占位符。
PHP Ajax 跨域问题解决方案
如果你的异步请求涉及跨域访问,也就是从A域名下的页面请求B域名下的资源,那么常规的AJAX请求会触发浏览器的同源策略限制。这时需要采用专门的跨域解决方案,比如JSONP或CORS,具体可以参考相关的技术文档。