Ajax学习(1)---Ajax 入门简介

学习目的:理解 Ajax 及其工做原理,构建网站的一种有效方法.

Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写.

下面是 Ajax 应用程序所用到的基本技术:
• HTML 用于创建 Web 表单并肯定应用程序其余部分使用的字段。
• JavaScript 代码是运行 Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通讯。
• DHTML 或 Dynamic HTML,用于动态更新表单。咱们将使用 div、span 和其余动态 HTML 元素来标记 HTML。
• 文档对象模型 DOM 用于(经过 JavaScript 代码)处理 HTML 结构和(某些状况下)服务器返回的 XML。

从上面能够看出,Ajax不是什么新的技术,而是几个老的技术经过新的方法结合起来,从而实现了新的效果!不少事物都是多元化的,能够说Ajax是一个新技术,也能够说Ajax是一个新的思路,一个新的架构!

Ajax的基本工做原理及流程:

在通常的 Web 应用程序中,用户填写表单字段并单击 Submit 按钮。而后整个表单发送到服务器,服务器将它转发给处理表单的脚本(一般是 PHP 或 Java,也多是 CGI 进程或者相似的东西),脚本执行完成后再发送回全新的页面。该页面多是带有已经填充某些数据的新表单的 HTML,也多是确认页面,或者是具备根据原来表单中输入数据选择的某些选项的页面。固然,在服务器上的脚本或程序处理和返回新表单时用户必须等待。屏幕变成一片空白,等到服务器返回数据后再从新绘制。这就是交互性差的缘由,用户得不到当即反馈,所以感受不一样于桌面应用程序。

Ajax 基本上就是把 JavaScript 技术和 XMLHttpRequest 对象放在 Web 表单和服务器之间。当用户填写表单时,数据发送给一些 JavaScript 代码而不是 直接发送给服务器。相反,JavaScript 代码捕获表单数据并向服务器发送请求。同时用户屏幕上的表单也不会闪烁、消失或延迟。换句话说,JavaScript 代码在幕后发送请求,用户甚至不知道请求的发出。更好的是,请求是异步发送的,就是说 JavaScript 代码(和用户)不用等待服务器的响应。所以用户能够继续输入数据、滚动屏幕和使用应用程序。

而后,服务器将数据返回 JavaScript 代码(仍然在 Web 表单中),后者决定如何处理这些数据。它能够迅速更新表单数据,让人感受应用程序是当即完成的,表单没有提交或刷新而用户获得了新数据。JavaScript 代码甚至能够对收到的数据执行某种计算,再发送另外一个请求,彻底不须要用户干预!这就是 XMLHttpRequest 的强大之处。它能够根据须要自行与服务器进行交互,用户甚至能够彻底不知道幕后发生的一切。结果就是相似于桌面应用程序的动态、快速响应、高交互性的体验,可是背后又拥有互联网的所有强大力量。

XMLHttpRequest 对象:

open():创建到服务器的新请求。

send():向服务器发送请求.

abort():退出当前请求。

readyState:提供当前 HTML 的就绪状态。

responseText:服务器返回的请求响应文本。

因为前两年的浏览器大战,使得各类浏览器得到 XMLHttpRequest 对象采用的方法有所不一样。

支持多种浏览器的方式建立 XMLHttpRequest 对象javascript

var xmlHttp = false;
try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
    try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
        xmlHttp = false;
    }
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}

这段代码的核心分为三步:
1. 创建一个变量 xmlHttp 来引用即将建立的 XMLHttpRequest 对象。
2. 尝试在 Microsoft 浏览器中建立该对象:
    尝试使用 Msxml2.XMLHTTP 对象建立它。
    若是失败,再尝试 Microsoft.XMLHTTP 对象。
3. 若是仍然没有创建 xmlHttp,则以非 Microsoft 的方式建立该对象。
最后,xmlHttp 应该引用一个有效的 XMLHttpRequest 对象,不管运行什么样的浏览器。

Ajax中的请求/响应

发出请求:Ajax 应用程序中基本相同的流程:
1. 从 Web 表单中获取须要的数据。
2. 创建要链接的 URL。
3. 打开到服务器的链接。
4. 设置服务器在完成后要运行的函数。
5. 发送请求。
html

function callServer() {
// Get the city and state from the web form
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
// Only go on if there are values for both fields
if ((city == null) || (city == "")) return;
if ((state == null) || (state == "")) return;
// Build the URL to connect to
var url = "/scripts/getZipCode.aspx?city=" + escape(city) + "&state=" + escape(state);
// Open a connection to the server
xmlHttp.open("GET", url, true);
// Setup a function for the server to run when it's done
xmlHttp.onreadystatechange = updatePage;
// Send the request
xmlHttp.send(null);
}

处理响应:

readyState可能返回的值:

0:请求未初始化(尚未调用 open())。

1:请求已经创建,可是尚未发送(尚未调用 send())。

2:请求已发送,正在处理中(一般如今能够从响应中获取内容头)。

3:请求在处理中;一般响应中已有部分数据可用了,可是服务器尚未完成响应的生成。

4:响应已完成;您能够获取并使用服务器的响应了。

必须知道两点:

1.什么也不要作,直到 xmlHttp.readyState 属性的值等于 4。

2.服务器将把响应填充到 xmlHttp.responseText 属性中。java

响应函数:web

function updatePage() {
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    document.getElementById("zipCode").value = response;
  }
}

开始的代码使用基本 JavaScript 代码获取几个表单字段的值。而后设置一个 asp 脚本做为连接的目标。要注意脚本 URL 的指定方式,city 和 state(来自表单)使用简单的 GET 参数附加在 URL 以后。

而后打开一个链接,这是您第一次看到使用 XMLHttpRequest。其中指定了链接方法(GET)和要链接的 URL。最后一个参数若是设为 true,那么将请求一个异步链接(这就是 Ajax 的由来)。若是使用 false,那么代码发出请求后将等待服务器返回的响应。若是设为 true,当服务器在后台处理请求的时候用户仍然可使用表单(甚至调用其余 JavaScript 方法)。

xmlHttp(要记住,这是 XMLHttpRequest 对象实例)的 onreadystatechange 属性能够告诉服务器在运行完成 后(可能要用五分钟或者五个小时)作什么。由于代码没有等待服务器,必须让服务器知道怎么作以便您能做出响应。在这个示例中,若是服务器处理完了请求,一个特殊的名为 updatePage() 的方法将被触发。

最后,使用值 null 调用 send()。由于已经在请求 URL 中添加了要发送给服务器的数据(city 和 state),因此请求中不须要发送任何数据。这样就发出了请求,服务器按照您的要求工做。

简单总结的Ajax的工做流程:

javascript得到要向服务器段传递的参数或变量,而后利用建立的XMLHttpRequest 对象发送个服务器段,若是服务器端接受数据并返回数据,则保存在responseText 属性中,最后经过javascript修改DOM,从而实如今客户端无刷新的修改数据。

 参考资料:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.htmlajax

相关文章
相关标签/搜索