What is Ajax?

Posted by deft on May 30, 2020

AJAX

什么是AJAX?

所谓的Ajax就是 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 它不是新的编程语言,而是一种使用现有标准的几种原有技术的结合体。Ajax是一种在无需重新加载整个网页的情况下能够更新部分网页的技术。

那Ajax的优点那些?

1,通过异步模式,提升了用户体验 2,优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了宽带占用 3,Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载

Ajax的缺点呢?

不支持浏览器back按钮 安全问题AJAX暴露了与服务器交互的细节 对搜索引擎的支持比较弱

要了解Ajax那么我们就要了解XMLHttpRequest了

XMLHttpRequest 对象

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。 XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。它可以向服务器提出请求并处理响应,而不阻塞用户, 可以在页面加载以后进行页面的局部更新

如何使用Ajax?

要完整实现一个Ajax异步调用和局部刷新,需要完成下面几个步骤。 1,创建XMlHttpRequest对象,也就是异步调用对象 2,创建一个新的HTTP请求,并且指定该HTTP请求的方法、URL 3,设置响应HTTP请求状态变化的函数 4,发送HTTP请求 5,获取异步调用返回给我们的数据 6,最后用JavaScript和DOM实现局部刷新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/** 1. 创建连接 **/
var xhr = null
xhr = new XMLHttpRequest()
/** 2. 连接服务器 **/
xhr.open('get', url, true)
/** 3. 发送请求 **/
xhr.send(null)
/** 4. 接受请求 **/
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    if (xhr.status == 200) {
      success(xhr.responseText)
    } else {
      /** false **/
      fail && fail(xhr.status)
    }
  }
}
AJAX状态码

| 状态码 | 说明 | | ———— | ———— | | 0 | 初始化,尚未调用open()方法 | | 1 | 调用open(),已经调用send()的方法,正在发送请求 | | 2 | 发送:已经调用send()方法,已接收到响应 | | 3 | 解析正在解析响应数据 | | 4 | 成功 |

服务器状态码

| 状态码 | 说明 | | ———— | ———— | | 200 | 成功 | | 301 | 永久重定向 | | 404 | 未找到对应文件 | | 500 | 服务器错误 |