XMLHttpRequest_基础使用
创作时间:
作者:
@小白创作中心
XMLHttpRequest_基础使用
引用
CSDN
1.
https://blog.csdn.net/qq_53914247/article/details/136526230
XMLHttpRequest(XHR)是浏览器与服务器通信的核心技术,掌握其基础使用方法对于前端开发人员来说至关重要。本文将通过具体的代码示例,详细介绍XHR的基础使用、查询参数和数据提交,帮助读者深入理解AJAX的原理和实现方式。
一. XMLHttpRequest - 基础使用
- AJAX 是浏览器与服务器通信的技术,采用 XMLHttpRequest 对象相关代码
- axios 是对 XHR 相关代码进行了封装,让我们只关心传递的接口参数
- 学习 XHR 也是了解 axios 内部与服务器交互过程的真正原理
- 语法如下:
const xhr = new XMLHttpRequest()
xhr.open('请求方法', '请求url网址')
xhr.addEventListener('loadend', () => {
// 响应结果
console.log(xhr.response)
})
xhr.send()
需求:以一个需求来体验下原生 XHR 语法,获取所有省份列表并展示到页面上
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>XMLHttpRequest_基础使用</title>
</head>
<body>
<p class="my-p"></p>
<script>
/**
* 目标:使用XMLHttpRequest对象与服务器通信
* 1. 创建 XMLHttpRequest 对象
* 2. 配置请求方法和请求 url 地址
* 3. 监听 loadend 事件,接收响应结果
* 4. 发起请求
*/
// 1. 创建 XMLHttpRequest 对象
const xhr = new XMLHttpRequest()
// 2. 配置请求方法和请求 url 地址
xhr.open('GET', 'http://hmajax.itheima.net/api/province')
// 3. 监听 loadend 事件,接收响应结果
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
const data = JSON.parse(xhr.response)
console.log(data.list.join('<br>'))
document.querySelector('.my-p').innerHTML = data.list.join('<br>')
})
// 4. 发起请求
xhr.send()
</script>
</body>
</html>
二. XMLHttpRequest - 查询参数
什么是查询参数:携带额外信息给服务器,返回匹配想要的数据
查询参数原理要携带的位置和语法:http://xxxx.com/xxx/xxx?参数名1=值1&参数名2=值2
所以,原生 XHR 需要自己在 url 后面携带查询参数字符串,没有 axios 帮助我们把 params 参数拼接到 url 字符串后面了
需求:查询河北省下属的城市列表
核心代码如下:
/**
* 目标:使用XHR携带查询参数,展示某个省下属的城市列表
*/
const xhr = new XMLHttpRequest()
xhr.open('GET', 'http://hmajax.itheima.net/api/city?pname=辽宁省')
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
const data = JSON.parse(xhr.response)
console.log(data)
document.querySelector('.city-p').innerHTML = data.list.join('<br>')
})
xhr.send()
三. XMLHttpRequest - 数据提交
- 了解原生 XHR 进行数据提交的方式
- 需求:通过 XHR 完成注册用户功能
- 步骤和语法:
- 注意1:但是这次没有 axios 帮我们了,我们需要自己设置请求头 Content-Type:application/json,来告诉服务器端,我们发过去的内容类型是 JSON 字符串,让他转成对应数据结构取值使用
- 注意2:没有 axios 了,我们前端要传递的请求体数据,也没人帮我把 JS 对象转成 JSON 字符串了,需要我们自己转换
- 注意3:原生 XHR 需要在 send 方法调用时,传入请求体携带
const xhr = new XMLHttpRequest()
xhr.open('请求方法', '请求url网址')
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
})
// 1. 告诉服务器,我传递的内容类型,是 JSON 字符串
xhr.setRequestHeader('Content-Type', 'application/json')
// 2. 准备数据并转成 JSON 字符串
const user = { username: 'itheima007', password: '7654321' }
const userStr = JSON.stringify(user)
// 3. 发送请求体数据
xhr.send(userStr)
- 核心代码如下:
/**
* 目标:使用xhr进行数据提交-完成注册功能
*/
document.querySelector('.reg-btn').addEventListener('click', () => {
const xhr = new XMLHttpRequest()
xhr.open('POST', 'http://hmajax.itheima.net/api/register')
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
})
// 设置请求头-告诉服务器内容类型(JSON字符串)
xhr.setRequestHeader('Content-Type', 'application/json')
// 准备提交的数据
const userObj = {
username: 'itheima007',
password: '7654321'
}
const userStr = JSON.stringify(userObj)
// 设置请求体,发起请求
xhr.send(userStr)
})
小结
1. AJAX 原理是什么?
window 提供的 XMLHttpRequest
2. 为什么学习 XHR ?
有更多与服务器数据通信方式,了解 axios 内部原理
3. XHR 使用步骤?
- 创建 XHR 对象 2. 调用 open 方法,设置 url 和请求方法 3. 监听 loadend 事件,接收结果 4. 调用 send 方法,发起请求
4. XHR 如何携带查询参数?
在调用 open 方法的时候,在 url? 后面按照指定格式拼接参数名和值
5. XHR 如何提交请求体数据?
在 send 中携带请求体数据,要按照后端要求的内容类型携带
热门推荐
如何安全减停生物制剂?强直性脊柱炎患者的治疗新思路
电脑冒烟时如何正确处置?这些安全要点请牢记
研究生邮件联系导师指南:6个实用建议助你脱颖而出
三次方程和四次方程的求根公式推导
羽绒服选购指南:从保暖原理到穿搭技巧,一文详解如何挑选优质羽绒服
永州零陵黄田铺石棚:远古的回响撑起人类文明最初的尊严
道教的形成:从五斗米道到太平道
铜矿选矿方法与工艺深度解析:提升铜矿品质与回收率的关键
用创新在海外市场撑起一片天!中国家电的出海秘诀在这里
十二生肖保护神一览:揭秘守护你的神秘力量
IP地址的分类与规划、子网划分
三次方程的几何新视界:双曲线-抛物线交点法与旋转圆系法
二建实务如何有效的备考:从基础到实战的全方位指导
《银翼杀手2049》:一场未来主义的视觉盛宴与存在主义思考
君士坦丁十一世:拜占庭的末代皇帝
八字命理学中的天干命理解释:如何解读个人命盘中的天干影响
贵州:高能级科创平台 引领高水平创新
糖尿病患者的宵夜和加餐指南:聪明选择,远离血糖波动
汽车发动机皮带如何更换?更换发动机皮带的步骤和注意事项有哪些?
铁路风景线|金秋时节,再赏“杭黄”
消化不良,胃胀气怎么办?打嗝、放屁好困扰,调整饮食习惯帮你改善胀气!
庞统有哪些功绩?他的才能是被夸大了吗?
72V20A充电器功率解析:正确使用充电器的重要性
车辆违停被拖走怎么办?处理方法、责任承担与交警判定全解析
为什么鸽子和橄榄枝象征和平?
六味地黄丸和五子衍宗丸能一起喝吗
藏羚羊的故事:高原精灵的生存现状与保护之路
烧茄子时记住一个小窍门,茄子不吸油不发黑,好吃又健康
宁波这些宝藏步道,最新推荐!
王维佳:从网络视角重新解读帝国史