0%
知识点总结
- 技术 Ajax 第一次提出是 2005 年,全名为 Asynchronous JavaScript and XML 。
- 由 Jesse James Garrett 提出 Ajax 的从此改变了人们与 Web 的“单击,等待”的交互模式。
- Ajax 技术的核心是 XMLHttpRequest 对象(简称XHR),在 XHR 出现之前通过其他 hack 手段实现的。比如通过 Java applet 或者 Flash 等中间层向服务器发送请求。
- 早在 1998 年就有人采用不同的手段实现与服务器的异步通信,Ajax 技术提出前被称为远程脚本(remote scripting)。
- XML 可扩展标记语言(全名:Extensible Markup Language)是一种标记语言。它被设计用来传送及携带数据信息,用于与服务器通信,和 Ajax 并没有必要的关系,由于 XML 文件格式文件庞大, 格式复杂, 传输占用带宽缺点,现在已被 JSON 代替。
- 第一款引入 XHR 对象的浏览器是微软的 IE5,通过 MSXML 库中的一个 ActiveX 对象实现的。
- 使用 XHR 对象时,要调用第一个方法是 open(),它接受三个参数:请求类型、请求的 URL 和表示是否异步的布尔值。
- open() 只是启动了一个发送请求以备发送,参数 URL 可以是相对路径、或绝对路径。
- 发送请求的方法是 send(),它接受一个参数,作为请求主体的发送数据。
- send() 发送后,在服务器响应后,响应数据会填充到 XHR 对象的属性中:responseText(响应主体返回的文本)、response XML(XML DOM 文档)、status(响应的 HTTP 状态码)、statusText(HTTP 状态的说明)。
- 收到响应后先检查 ststus 属性,200 成功、304 未修改可用缓存的。
- 在异步请求中,需要通过 onreadystatechange 方法对 XHR 对象的 readyStste 属性检测来判断响应是否完成。为了兼容浏览器,该方法最好在 open() 之前指定,且使用 XHR 直接检测属性而不是 this 代替。
- readyState 可取的值如下。
- 0:未初始化。尚未调用 open() 方法。
- 1:启动。已经调用 open() 方法,但未调用 send() 方法。
- 2:发送。已经调用 send() 方法,但未接受到响应。
- 3:接受。已经接受到部分响应数据。
- 4:完成。已接收全部数据。可在客户端使用了。
- 在接受响应前可以使用 abort() 方法来取消异步请求。不建议之后重用,且应当解引用 XHR 对象。