持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
简易使用原生Ajax
1. 什么是XMLHttpRequest
XMLHttpRequest(简称XHR)是浏览器提供的JavaScript对象,通过它,可以请求服务器上的数据资源。
2. 使用xhr发起GET请求
① 创建xhr对象
② 调用xhr.open()函数
③ 调用xhr.send()函数
④ 监听xhr.onreadystatechange事件
使用xhr发起带参数的GET请求:
使用xhr对象发起带参数的GET请求时,只需要在调用xhr.open期间,为URL地址指定参数即可
这种在URL地址后面拼接的参数,叫做 查询字符串(?后面的)
比如: xhr.open('GET','www.guguuuu.abc:8080/api/getmone…');
多个参数可以用 & 进行连接
3. 完整流程
1.创建xhr对象
var xhr = new XMLHttpRequest();
2.调用open函数,指定请求方式 与 URL地址
xhr.open('GET', 'http://www.guguuuu.abc:8080/api/getmoney');
// xhr.open('GET','http://www.guguuuu.abc:8080/api/getmoney?id=1'); 带参数的get请求
3.调用send函数,发起Ajax请求
xhr.send();
4.监听onreadystatechange事件
xhr.onreadystatechange = function () {
//4.1 监听 xhr对象 的请求状态 readyState 与 服务器响应的状态 status
if (xhr.readyState === 4 && xhr.status === 200) {
//上面这一行永远是固定写法,而且status是http请求状态的一部分
//4.2 打印服务器响应回来的数据
console.log(xhr.responseText);
console.log(xhr.response);
}
}
4. 了解xhr对象的readyState属性
XMLHttpRequest对象的readyState属性,用来表示当前Ajax请求所处的状态。每个Ajax请求必然处于以下状态中的一个
| 值 | 状态 | 描述 |
|---|---|---|
| 0 | UNSENT | XMLHttpRequest对象已被创建,但尚未调用open方法 |
| 1 | OPENED | open()方法已被调用 |
| 2 | HEADERS_RECEIVED | send()方法已被调用,响应头也已经被接收 |
| 3 | LOADING | 数据接收中,此时response属性中已经包含部分数据 |
| 4 | DONE | Ajax请求完成,这意味着数据传送已经彻底 完成 或 失败 |
5. 什么是查询字符串
定义: 查询字符串(URL参数)是指在URL的末尾加上用于向服务器发送信息的字符串(变量)
格式: 将英文的?放在URL的末尾,然后再加上 参数=值,想加上多个参数的话,使用&符号进行分隔。 以这个形式,可以将想要发送给服务器的数据添加到URL中。
eg:
不带参数的URL地址www.guguuuu.abc:8080/api/getmone…
带一个参数的URL地址www.guguuuu.abc:8080/api/getmone…
带两个参数的URL地址www.guguuuu.abc:8080/api/getmone…
6. URL编码与解码
什么是URL编码
URL地址中,只允许出现英文相关的字母、标点符号、数字,因此,在URL地址中不允许出现中文字符
如果URL中需要包含中文这样的字符,则必须对中文字符进行编码(转义)。
URL编码的原则: 使用安全的字符(没有特殊用途或者特殊意义的可打印的字符)去表示那些不安全的字符(中文韩文日文这些非英文的字符)
URL编码原则的通俗理解: 使用英文字符去表示非英文的字符。
eg:
www.guguuuu.abc:8080/api/getmone…
经过URL编码之后,URL地址变成了如下格式:
www.guguuuu.abc:8080/api/getmone…
👉3组百分号表示一个中文👈
7. 如何对URL进行编码与解码
浏览器提供了URL编码与解码的API,分别是:
encodeURI() 用来对URL地址进行编码的函数
decodeURI() 用来对URL地址进行解码的函数
var str = '无敌暴龙战神';
var str2 = encodeURI(str);
var str3 = decodeURI(str2);
console.log(str2);//%E6%97%A0%E6%95%8C%E6%9A%B4%E9%BE%99%E6%88%98%E7%A5%9E
console.log(str3);//无敌暴龙战神
URL编码注意事项
由于浏览器会自动对URL地址进行编码操作,因此,大多数情况下,程序员不需要关心URL地址的编码与解码操作
关于URL编码的知识,参考如下博客 blog.csdn.net/Lxd_0111/ar…