当前位置: 首页 > news >正文

AJAX 原理_第一节_XHR 对象

文章目录

  • 1.AJAX原理
    • 1.1 初识XML
    • 1.2 查询参数
    • 1.3 案例-地区查询
    • 1.4 案例-注册-设置请求头

1.AJAX原理

1.1 初识XML

AJAX原理是什么?

XMLHttpRequest对象

XHR对象定义:
通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL,获取数据.这允许页面在不影响用户操作的情况下,更新页面的局部内容.XMLHttpRequest 在 AJAX 编程中被大量使用

为什么学习XHR?

有更多与服务器数据通信方式
了解axios内部原理

XHR使用步骤?

1.创建XHR对象
2.调用open方法,设置url和请求方法
3.监听loadend事件,接收结果
4.调用send方法,发起请求

下面是代码实例:

//1.创建 XMLHttpRequest 对象
const xhr=new XMLHttpRequest()// 2.配置请求方法和请求 url 地址
xhr.open('GET','http://hmajax.itheima.net/api/province')// 3.监听 loadend 事件,接收响应结果
xhr.addEventList('loadend',()=>{
console.log(xhr.reponse)
//将数据分离--为了展示数据--不是必要步骤
const data =JSON.parse(xhr.response)
console.log(data.list.join('<br>')
document.querySelector('.my-p').innerHTML=data.list.join('<br>'
})

1.2 查询参数

在这里插入图片描述

 <script>/*** 目标:使用XHR携带查询参数,展示某个省下属的城市列表*///  使用 XHR4步走// 1.创建 XML 对象const xhr=new XMLHttpRequest()// 2.配置请求方法和请求 url 地址xhr.open('GET','http://hmajax.itheima.net/api/city?pname=黑龙江省')// 3.监听 loadend 事件,接收响应结果xhr.addEventListener('loadend',()=>{console.log(xhr.response)const data=JSON.parse(xhr.response)console.log(data)document.querySelector('.box').innerHTML=data.list.join('<br>')})// 4.发送xhr.send()</script>

1.3 案例-地区查询

查看接口文档:
在这里插入图片描述

通过查看接口文档可知,查询参数有两个,正常通过 GET 查询的时候,需要拼接 比如xhr.open(‘GET’,‘http://hmajax.itheima.net/api/city?pname=黑龙江省&…’),参数一多,拼接起来的效率就低了

通过一种方法:new URLSearchParams(),可以把你传来的对象变成参数名=参数值&参数名=参数值…的这种形式,然后直接放入到 xhr.open 中使用

方法核心代码:

 // 1.收集带拼接的参数值const pname=document.querySelector('.province').valueconst cname=document.querySelector('.city').value//2.将收集的参数值,写成对象的形式,对象中有参数名:参数值的形式const qObj={pname,cname}//3.将收集而来的对象,转化成 XXX&XXX 的形式//步骤一:const paramsObj=new URLSearchParams(qObj)//步骤二:const queryString=parmsObj.toString()

完整代码:

 <script>
document.querySelector('.sel-btn').addEventListener('click',()=>{// 1.收集带拼接的参数值const pname=document.querySelector('.province').valueconst cname=document.querySelector('.city').value//2.将收集的参数值,写成对象的形式,对象中有参数名:参数值的形式const qObj={pname,cname}//3.将收集而来的对象,转化成 XXX&XXX 的形式//步骤一:const paramsObj=new URLSearchParams(qObj)//步骤二:const queryString=paramsObj.toString()//使用 XHR 对象查询参数// 1.创建 XML 对象const xhr=new XMLHttpRequest()// 2.配置请求方法和请求 url 地址xhr.open('GET',`http://hmajax.itheima.net/api/area?${queryString}`)// 3.监听 loadend 事件,接收响应结果xhr.addEventListener('loadend',()=>{console.log(xhr.response)const data=JSON.parse(xhr.response)console.log(data)//处理渲染数据const htmlStr =data.list.map(araeName=>{return `<li class="list-group-item">${araeName}</li>`}).join('')console.log(htmlStr)document.querySelector('.list-group').innerHTML=htmlStr})// 4.发送xhr.send()})</script>

渲染数据代码详解

const htmlStr = data.list.map(areaName => {return <li class="list-group-item">${areaName}</li>;
}).join('');
  • data.list,拿数据的数组
  • .map 循环每一项,拿到一个字符串数组,每一项就是 return 的 li 标签
  • ()里是箭头函数,areaName就是每一项的值,后面用了模板字符串
  • .join(‘’),将字符串数组拼接起来’'表示中间不加东西的拼接

在这里插入图片描述

1.4 案例-注册-设置请求头

在这里插入图片描述
根据接口文档,使用 XHR 对象,需要告诉服务器内容类型,比如这个文档就是告诉服务器传 JSON 数据
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/301631.html

相关文章:

  • 免安装MySQL启动全解:从解压到远程访问的保姆级教程
  • U盘中毒,文件被隐藏的解决方法
  • Redis6.0+安装教程(Linux)
  • Map系列
  • docker搭建部署 onlyoffice 实现前端集成在线解析文档解决方案
  • 车载诊断架构 ---面向售后的DTC应该怎么样填写?
  • net8.0一键创建支持(Kafka)
  • 基于Prometheus+Grafana的分布式爬虫监控体系:构建企业级可观测性平台
  • 【旧文】Adobe Express使用教程
  • net8.0一键创建辅助开发的个人小工具
  • c++加载qml文件
  • G1回收器
  • 企业IT管理——信息安全策略纲要【模板】
  • TIM 编码器接口
  • listen() 函数详解
  • 表单重复提交、以及重复消费的幂等性问题解决方案
  • 企业如何便捷地使用宝塔面板管理系统服务和网站:一键全能部署与高效运维
  • 062_Arrays类与数组操作
  • 在飞牛OS上部署MoonTV:一站式影视聚合播放器安装教程
  • [spring6: @EnableWebMvc]-源码分析
  • MySQL 事务和锁
  • Webpack 和 Vite 的关键区别
  • 在Luckfox Lyra(Zero W)上将TF卡格式化为ext4文件系统
  • 人工智能——图像梯度处理、边缘检测、绘制图像轮廓、凸包特征检测
  • 递归查询美国加速-技术演进与行业应用深度解析
  • 2025 环法对决,VELO Angel Glide 坐垫轻装上阵
  • 【AI论文】GR-3技术报告
  • 《频率之光:危机降临》
  • 详细解释一个ros的CMakeLists.txt文件
  • tpms传感器的设计---硬件电路