Ajax 请求彻底改变了传统 web 应用程序的样子,它让 JavaScript 开发人员能创建高度动态化、交互性强、响应迅速的应用程序,就像在桌面应用程序中体验到的那样。结果,在现代的 web 应用程序中,Ajax 请求随处可见。有时候很容易忘记这点,尽管用户看不到页面加载,但 Ajax 请求执行的是完整的 HTTP 请求,它与常规页面加载一样。因此,应该多加关注,减少所使用的 Ajax 请求的数量。
这方面的一个例子是搜索结果分页。我经常看到在应用程序中,用一个 Ajax 请求以 JSON 数组形式返回搜索结果,再用一个请求返回数据库中结果条数,用于分页逻辑。清单 1 和 清单 2 显示的是这两个请求的基本样例(使用 Prototype 框架)。
清单 1. 第一个请求:获取表记录
- var url = "get_data.php";
- var options = {
- method: "post",
- parameters: {"page":1,"rows":5},
- onSuccess: firstCallbackFunction,
- onFailure: firstCallbackFunction
- }
- new Ajax.Request(url, options);
显示的是第二个获取总记录数的请求。
清单 2.第二个请求:获取总记录数
- var url = "get_count.php";
- var options = {
- method: "post",
- parameters: {},
- onSuccess: secondCallbackFunction,
- onFailure: secondCallbackFunction
- }
- new Ajax.Request(url, options);
和 显示的是对应的 JSON 格式的 HTTP 请求。
清单 3. 第一个响应:记录数组
- {
- "records": [
- {"id":1,"name":"John","email":"john@example.com"},
- {"id":2,"name":"Mary","email":"mary@example.com"},
- {"id":3,"name":"Tony","email":"tony@example.com"},
- {"id":4,"name":"Emma","email":"emma@example.com"},
- {"id":5,"name":"Alan","email":"alan@example.com"}
- ]
- }