AJAX = 异步 Javascript + XML
XMLHttpRequest 是 AJAX 的基础。
创建 XMLHttpRequest 对象
语法:
|
|
eg:
|
|
向服务器发送请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法。
open()方法
语法:
|
|
- method:请求的类型,GET 或 POST
- url:文件在服务器上的位置;
- async:true(异步)或 false(同步
eg:
|
|
send()方法
语法:
|
|
- string:仅用于 POST 请求
eg:
|
|
GET 还是 POST ?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况,使用 POST 请求:
- 无法使用缓存文件(更新服务器上的文件或数据库)
- 向服务器发送大量数据(POST 没有数据量限制)
- 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
服务器响应
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
responseText 属性
如果来自服务器的响应并非 XML,则使用 responseText 属性:
|
|
responseXML 属性
如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,则使用 responseXML 属性:
|
|
onreadystatechange 事件
三个属性
下面是 XMLHttpRequest 对象的三个重要的属性:
onreadystatechange:
- 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState:
- 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化:
- 0: 请求未初始化;
- 1: 服务器连接已建立;
- 2: 请求已接收;
- 3: 请求处理中;
- 4: 请求已完成,且响应已就绪。
status:
- 200: “OK”;
- 404: 未找到页面。
onreadystatechange
在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
|
|
使用 callback 函数
如果网站上存在多个 AJAX 任务,那么应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。
该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):
|
|