AJAX 基础知识

XMLHttpRequest Object
参考
http://developer.apple.com/internet/webcontent/xmlhttpreq.html
http://www.crackj2ee.com/Article/ShowArticle.asp?ArticleID=407

1)一般的处理过程
在一般的 Web 应用程序中,用户填写表单字段并单击 Submit 按钮。然后整个表单发送到服务器,服务器将它转发给处理表单的组件或者程序,执行完成后再发送回整个全新的页面。该页面可能是带有已经填充某些数据的新表单的 HTML,也可能是确认页面,或者是具有根据原来表单中输入数据选择的某些选项的页面。在这个处理过程中,用户必须等待。屏 幕形成一片空白,等到服务器返回数据后再重新绘制。这就是交互性差的原因,用户得不到立即反馈,因此感觉不同于桌面应用程序。

2)AJAX的处理过程
Ajax 把 javascript 技术和 XMLHttpRequest 对象放在 Web 表单和服务器之间。当用户填写表单时,数据发送 到 javascript 代码或者功能函数,而直接发送给服务器,通过javascript 功能函数获得表单数据,再向服务器发送请求,同时用户屏幕上的表单保持原来的状态,不会出现闪烁、消失或延迟的情况。用户请求和javascript 代码发送请求是异步的,后台的, 用户不必被强制等待服务器的响应,可以继续输入数据、滚动屏幕和使用应用程序界面。
然后,服务器将数据返回 javascript 功能函数(预先定义好的),后者决定如何处理这些数据。它可以迅速更新表单数据,让人感觉表单没有经过提交或刷新而用户得到了新数据和新的界面。 javascript 功能函数可以对收到的数据执行某种计算或者过滤,然后在不需要用户干预情况下发送另一个请求,这就是XMLHttpRequest 的强大特点。它可以根据需要自行与服务器进行交互,用户甚至可以完全不知道幕后发生的一切。界面处理和通信交互相互独立工作。



3)基本知识
XMLHttpRequest
XMLHttpRequest是一个 javascript 对象,通过 XMLHttpRequest 对象与服务器进行对话的是 属于 javascript 技术范畴的,创建该对象可以通过下面的方式:
<script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
</script>
getElementById()
获得XMLHttpRequest对象以后,可以通过该句柄
  • 获取表单数据,通过getElementById() 方法
  • 修改表单上的数据,通过etElementById() 方法
  • 解析 HTML 和 XML
DOM
 DOM,即文档对象模型。大量使用 DOM 的 复杂的 Java 和 C/C++ 程序,在 javascript 技术中使用 DOM 很容易,也非常直观。当需要在 javascript 代码和服务器之间传递 XML 和改变 HTML 表单的时候,需要使用DOM。


XMLHttpRequest 是 Ajax 应用程序的核心,不同浏览器获得 XMLHttpRequest 对象可能需要采用不同的方法。


Microsoft 浏览器 Internet Explorer 使用 MSXML 解析器处理 XML,因此如果编写的 Ajax 应用程序要和 Internet Explorer 打交道,那么必须用一种特殊的方式创建对象,根据 Internet Explorer 中安装的 javascript 技术版本不同,MSXML 实际上有两种不同的版本,必须对这两种情况分别编写代码。参考如下:

var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}

  1. 建立一个变量 xmlHttp 来引用即将创建的 XMLHttpRequest 对象。
  2. 尝试在 Microsoft 浏览器中创建该对象:
    • 尝试使用 Msxml2.XMLHTTP 对象创建它。
    • 如果失败,再尝试 Microsoft.XMLHTTP 对象。
  3. 如果仍然没有建立 xmlHttp,则以非 Microsoft 的方式创建该对象。

最后,xmlHttp 应该引用一个有效的 XMLHttpRequest 对象,无论运行什么样的浏览器。


/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}

Ajax 的基本请求/响应模型。


首先需要一个 Web 页面能够调用的 javascript 方法(比如当用户输入文本或者从菜单中选择一项时)。
接下来就是在所有 Ajax 应用程序中基本的流程:

  1. 从 Web 表单中获取需要的数据。
  2. 建立要连接的 URL。
  3. 打开到服务器的连接。
  4. 设置服务器在完成后要运行的函数。
  5. 发送请求。
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.php?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);
}
首先使用基本 javascript 代码获取几个表单字段的值。
然后设置一个 PHP 脚本作为链接的目标。
然后打开一个连接,连接方法(GET)和要连接的 URL。最后一个参数如果设为 true,那么将请求一个异步连接(这就是 Ajax 的由来)。如果使用 false,那么代码发出请求后将等待服务器返回的响应。如果设为 true,当服务器在后台处理请求的时候用户仍然可以使用表单(甚至调用其他 javascript 方法)。
xmlHttp
onreadystatechange 属性可以告诉服务器在运行完成 后执行的任务,例如 updatePage() 的方法将被触发。
最后,使用值 null 调用 send()


学习

讨论
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值