JavaScript Ajax

64 阅读1分钟

Ajax

什么是 Ajax

- Ajax 是 Asynchronous JavaScript and XML (异步 JavaScript 和 XML) 的简写
- Ajax 中的异步:可以异步地向服务器发送请求,在等待响应的过程装,不会阻止当前页面,浏览器可以做自己的事情。直到成功获取响应后,浏览器才开始处理响应数据
- XML(可扩展标记语言)是前后端数据通信时传输数据的一种格式
- XML 现在已经不怎么用了,现在比较常用的是 JSON
- Ajax 其实就是浏览器与服务器之间的一种异步通信方式
- 使用 Ajax 可以在不重新加载整个页面的情况下,对页面的某部分进行更新

Ajax 基本用法

XMLHttpRequest

- Ajax 想要实现浏览器与服务器之间的异步通信,需要依靠 XMLHttpRequest,他是一个构造函数
- 不论是 XMLHttpRequest,还是 Ajax,都没有具体的某种数据格式绑定

Ajax 的使用步骤

1. 创建 XMLHttpRequest
   - const xhr = new XMLHttpRequest();
2. 监听事件,处理响应
   - xhr.onreadystatechange = ()=>{}
   - xhr.addEventListener('onreadystatechange',()=>{},false)
3. 准备发送请求 open
   - xhr.open('HTTP方法/请求方法','url',是否异步(boole));
   - 不是异步会很糟糕
4. 发送请求 send
   - xhr.send(null);
   - send传递参数可以为空,值设为 Null 可以解决兼容问题

```js
    const xhr = new XMLHttpRequest();
    xhr.onreadystatechange = () => {
        if (xhr.readyState !== 4) return;

        if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
            console.log(xhr.responseText);
        }
    }

    xhr.open('GET', 'url', true);

    xhr.send(null);
```

readystatechange 事件监听 readyState 这个状态的变化

- 一共有 0~4个值
- 0:未初始化,尚未调用 open()
- 1:启动,已经调用 open(), 但尚未调用 send()
- 2: 发送,已经调用 send(), 但尚未接收到响应
- 3: 接收,已经接收到部分响应数据
- 4: 完成,已经接收到全部响应数据,而且已经可以在浏览器中使用了