是 Asynchronous JavaScript and XML 的缩写,中文译作异步 JavaScript 和 XML 。 AJAX 不是一门新的语言,而是将 JavaScript 、 XML 和异步执行这 3 项技术综合运用的一个解决方案,包含以下几个主要内容点(前两项内容就是 DHTML 实现的功能):
AJAX 的核心是客户端的 JavaScript 程序能够与 Web 服务器进行异步数据交换,也就是实现异步执行。
异步执行中有一个非常特殊的功能,那就是回调( callback )。
AJAX 是 Asynchronous JavaScript and XML 的缩写,意思是异步的 JavaScript 和 XML 。 AJAX 并不是一门新的语言或技术,它是 JavaScript 、 XML 、 CSS 、 DOM 等多种已有技术的组合,可以实现客户端的异步请求操作,从而实现在不需要刷新页面的情况下与服务器进行通信,减少了用户的等待时间,减轻了服务器和带宽的负担,提供更好的服务响应。
传统的 Web 应用模式中,页面中用户的每一次操作都将触发一次返回 Web 服务器的 HTTP 请求,服务器进行相应的处理(获得数据、运行与不同的系统会话)后,返回一个 HTML 页面给客户端。
而在 AJAX 应用中,页面中用户的操作将通过 AJAX 引擎与服务器端进行通信,然后将返回结果提交给客户端页面的 AJAX 引擎,再由 AJAX 引擎来决定将这些数据插入页面的指定位置。
与传统的 Web 应用不同, AJAX 在用户与服务器之间引入一个中间媒介( AJAX 引擎),从而消除了网络交互过程中的处理- 等待- 处理-等待的缺点,从而大大改善了网站的视觉效果。
可以把一部分以前由服务器负担的工作转移到客户端,利用客户端闲置的资源进行处理,减轻服务器和带宽的负担,节约空间和成本。
无刷新更新页面,从而使用户不用再像以前一样在服务器处理数据时,只能在死板的白屏前焦急地等待。 AJAX 使用 XMLHttpRequest 对象发送请求并得到服务器响应,在不需要重新载入整个页面的情况下,就可以通过 DOM 及时将更新的内容显示在页面上。
可以调用 XML 等外部数据,进一步促进页面显示和数据的分离。
基于标准化的并被广泛支持的技术,不需要下载插件或者小程序,即可轻松实现桌面应用程序的效果。
AJAX 没有平台限制。 AJAX 把服务器的角色由原本传输内容转变为传输数据,而数据格式则可以是纯文本格式和 XML 格式,这两种格式没有平台限制。
同其它事物一样, AJAX 也不尽是优点,它也有一些缺点,具体表现在以下几个方面:
AJAX 是 XMLHttpRequest 对象和 JavaScript 、 XML 、 CSS 、 DOM 等多种技术的组合。其中,只有 XMLHttpRequest 对象是新技术,其它的均为已有技术。
AJAX 使用的技术中,最核心的技术就是 XMLHttpRequest 。它是一个具有应用程序接口的 JavaScript 对象,能够使用超文本传输协议( HTTP )连接一个服务器,是微软公司为了满足开发者的需要,于1999 年在 IE 5.0浏览器中率先推出的。现在许多浏览器都对其提供了支持,不过实现方式与 IE 有所不同。
虽然 JavaScript 的安全性已逐步提高,提供了很多受限功能,包括访问浏览器的历史记录、上传文件、改变菜单栏等。但是,当在 Web 浏览器中执行 JavaScript 代码时,用户允许任何人编写的代码运行在自己的机器上,这就为移动代码自动跨越网络来运行提供了方便条件,从而给网站带来了安全隐患。为了解决这一潜在的危险,浏览器厂商在一个 sandbox (沙箱)中执行 JavaScript 代码。沙箱是一个只能访问很少计算机资源的密闭环境,从而使 AJAX 应用不能读取或写入本地文件系统。虽然这会给程序开发带来困难,但是它提高了客户端 JavaScript 的安全性。
当采用普通的 HTTP 请求时,请求参数的所有的代码都是以明码的方式在网络上传输的。对于一些不太重要的数据,采用普通的 HTTP 请求即可满足要求,但是如果涉及特别机密的信息,这样做则是不行的,因为某些恶意的路由可能读取传输的内容。为了保证 HTTP 传输数据的安全,可以对传输的数据进行加密,这样即使被看到,危险也是不大的。虽然对传输的数据进行加密,可能会对服务器的性有所降低,但对于敏感数据,以性能换取更高的安全,还是值得的。
虽然 AJAX 允许客户端完成部分服务器的工作,并可以通过 JavaScript 来检查用户的权限,但是通过客户端脚本控制权限并不可取,因为一些解密高手可以轻松绕过 JavaScript 的权限检查,直接访问业务逻辑组件,从而对网站造成威胁。通常情况下,在 AJAX 应用中,应该将所有的 AJAX 请求都发送到控制器,由控制器负责检查调用者是否有访问资源的权限。
由于 AJAX 将大量的计算从服务器移到了客户端,这就意味着浏览器将承受更大的负担,而不再是只负责简单的文档显示。由于 AJAX 的核心语言是 JavaScript ,而 JavaScript 并不以高性能知名,另外, JavaScript 对象也不是轻量级的,特别是 DOM 元素耗费了大量的内存,因此,如何提高 JavaScript 代码的性能,对于 AJAX 开发者来说尤为重要。下面介绍几种优化 AJAX 应用执行速度的方法。
AJAX 使用了大量的 JavaScript 和 AJAX 引擎,而这些内容需要浏览器提供足够的支持。目前提供这些支持的浏览器主要分为两大类:一类是 IE 浏览器,在 IE 浏览器中,只有 IE 5.0 及以上版本才支持;另一类是非 IE 浏览器,如 Firefox 、 Mozilla 1.0 、 Safari 1.2 及以上版本。虽然 IE 浏览器和非 IE 浏览器都支持 AJAX ,但是它们提供的创建 XMLHttpRequest 对象的方式不一样,所以使用 AJAX 的程序必须测试针对各个浏览器的兼容性。
AJAX 不支持多种字符集,它默认的字符集是 UTF-8 ,所以在应用 AJAX 技术的程序中应及时进行编码转换,否则程序中出现的中文字符将变成乱码。一般情况下,有以下两种情况会产生中文乱码。
PHP 发送中文、 AJAX 接收只需在 PHP 顶部添加如下语句。
<span class="p"
>header("Content-type:text/html;charset=GB2312");// 指定发送数据的编码格式
XMLHttp 会正确解析其中的中文。
AJAX 发送中文、 PHP 接收这个比较复杂, AJAX 中先用 encodeURIComponent 对要提交的中文进行编码,在 PHP 页添加如下代码。