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.pswp.cn/bicheng/90859.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BeautifulSoup 使用详解与实战示例

BeautifulSoup 是一个用于解析HTML和XML文档的Python库&#xff0c;它能够将复杂的HTML文档转换成一个复杂的树形结构&#xff0c;使得我们可以轻松地查找和提取所需的内容。下面我将详细介绍BeautifulSoup的使用流程&#xff0c;并结合实际示例进行说明。一、安装与基础使用1.…

LangChain实战——实现多轮对话 + Function Calling

随着大语言模型&#xff08;LLMs&#xff09;的迅猛发展&#xff0c;“Function Calling”&#xff08;函数调用&#xff09;逐渐成为一个重要的能力&#xff0c;它使得模型不仅能聊天&#xff0c;还能像“中控大脑”一样调用外部函数完成具体任务&#xff0c;比如查天气、调用…

湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 起头篇

行业研究从业人员经常需要在承接研究案子后快速的摸清委托方所在行业。而俗话说&#xff0c;隔行如隔山&#xff0c;快速了解行业&#xff0c;主要用于行业分析报告及为市场细分准入进行前期铺垫&#xff0c;要想摸清一个行业&#xff0c;需要长期持续的跟踪。了解一个行业&…

【c++】从 “勉强能用” 到 “真正好用”:中文问答系统的 200 行关键优化——关于我用AI编写了一个聊天机器人……(16)

先看核心结论&#xff1a;两段代码的本质区别如果用一句话总结两段代码的差异&#xff1a;前者是 “带中文支持的问答系统”&#xff0c;后者是 “真正适配中文的问答系统”。具体来说&#xff0c;两段代码的核心功能都是 “加载问答数据→接收用户输入→匹配答案”&#xff0c…

VR 技术在污水处理领域的创新性应用探索​

在广州&#xff0c;VR 污水处理技术的应用可谓是多点开花。首先&#xff0c;在污水处理流程模拟方面&#xff0c;工程师们利用 VR 技术创建了高度逼真的污水处理厂三维模型&#xff0c;将污水处理的整个流程&#xff0c;从预处理去除大颗粒杂质和悬浮物&#xff0c;到初级处理通…

深度学习暑期科研项目(两个月发EI论文)

深度学习暑期科研项目&#xff08;8周发EI论文&#xff09; 哈尔滨工业大学博士的六大选题对本科生而言&#xff0c;越早接触系统的科研训练开始上手科研项目&#xff0c;就越能在未来的升学求职中占据很大的优势。暑假是提升个人简历、丰富科研经历的最佳时期&#xff01;哈尔…

【RH134 问答题】第 1 章 提高命令行运行效率

目录#!/bin/bash 是什么意思&#xff1f;PATH 变量有什么重要作用&#xff1f;echo 命令的作用是什么&#xff1f;解释下列正则表达式的含义简述正则表达式和 shell 模式匹配的区别&#xff0c;在 shell 命令使用正则表达式的时候需要注意什么&#xff1f;#!/bin/bash 是什么意…

OpenCV(02)图像颜色处理,灰度化,二值化,仿射变换

【OpenCV&#xff08;01&#xff09;】基本图像操作、绘制&#xff0c;读取视频 目录图像颜色加法灰度化二值化仿射变换图像颜色加法 颜色加法 import cv2 as cv import numpy as np#读图 cao cv.imread(E:\hqyj\code\opencv\images\cao.png) pig cv.imread(E:\hqyj\code\o…

嵌入式——单片机的独立按键

一、目的功能通过开发板上的独立按键k1控制d1指示灯亮灭&#xff0c;k1一次亮再按一次灭。二、硬件原理图三、消抖理解&#xff08;一&#xff09;核心原理&#xff1a;当事件被重复触发时&#xff0c;设置一个延迟&#xff0c;只有在该时间内没有新的事件被触发&#xff0c;才…

机器学习的工作流程

&#x1f31f; 欢迎来到AI奇妙世界&#xff01; &#x1f31f; 亲爱的开发者朋友们&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能领域的探索者与分享者&#xff0c;很高兴在CSDN与你们相遇&#xff01;&#x1f389; 在这里&#xff0c;我将持续输出AI前沿技术、实…

聚类里面的一些相关概念介绍阐述

一、性能度量外部指标&#xff1a;聚类结果与某个“参考模型”进行比较&#xff1b;系数&#xff1a; &#xff0c;其中的 表示样本是否属于某类簇&#xff1b; 指数&#xff1a;&#xff0c;其中 表示样本在两个聚类结果中都是同一类簇&#xff0c; 表示在其中一个聚类结果中…

mmap机制

先看这个 MMAP 机制通俗易懂-CSDN博客 一句话 **mmap(memory map)是操作系统提供的“把文件或设备直接映射到进程虚拟地址空间”的机制,Java 里对应 `MappedByteBuffer`。** --- ### 1. 技术本质 - 系统调用:`mmap()`(POSIX)、`CreateFileMapping`(Windows)。 …

嵌入式硬件篇---驱动板

制作 ESP32 驱动板的核心是 “搭建 ESP32 与外设之间的桥梁”—— 因为 ESP32 的 GPIO 引脚输出电流很小&#xff08;最大 20mA&#xff09;&#xff0c;无法直接驱动大功率设备&#xff08;如电机、继电器、电磁阀等&#xff09;&#xff0c;驱动板的作用就是放大电流 / 功率&…

UniappDay01

1.技术架构2.创建uniapp项目 通过HBuilderX创建 官网安装创建uniapp vue3项目安装uniapp vue3的编译器在工具栏启动微信小程序开启服务端口模拟器窗口分离和置顶 通过命令行创建 3.pages.json和tabbar案例 pages.json用来配置路由&#xff0c;导航栏&#xff0c;tabbar等页面类…

子空间投影,投影矩阵,最小二乘法

一、子空间投影 1.1 投影与误差向量b 在 向量a 上的投影即 a 上离 b 最近的点&#xff1a; paTbaTaa p \frac{a^T b}{a^Ta}a paTaaTb​a 我们记 误差 e b - p&#xff0c;显然误差e 和 a 是正交的。 1.2 投影矩阵向量b 在子空间S上的投影是S中离b 最近的向量p。 我们做如下推…

基于FPGA的SPI控制FLASH读写

基于FPGA的SPI控制FLASH读写 文章目录基于FPGA的SPI控制FLASH读写一、SPI简介二、FLASH_M25P16简介信号描述功能操作注意时序三、设计思路框图设计状态机设计四、上板验证1、读ID2、读数据3、扇区擦除写数据五、总结六、代码一、SPI简介 SPI是Serial Peripheral interface的缩…

Pytest 参数化进阶:掌握 parametrize 的多种用法

概述 在自动化测试中,@pytest.mark.parametrize 不仅仅能用来为测试函数提供多组输入数据,还能配合其他功能实现更复杂的测试逻辑。本文将带你深入了解 @pytest.mark.parametrize 的多种常见用法,助你在不同场景下写出更高效、更清晰的测试代码 基础用法回顾:单个参数化 …

K8S 九 安全认证 TLS

目录第九章 安全认证访问控制概述认证管理授权管理 RBACRBACRolerules中的参数RoleBinding9.4 准入控制其他K8S的TLS是什么&#xff08;DeepSeek&#xff09;1. 加密通信2. 身份认证&#xff08;Authentication&#xff09;3. 数据完整性K8s 中 TLS 的具体应用**1. API Server …

积分兑换小程序Java

某个学校为了激励学生踊跃参加一些社会实践活动&#xff0c;会对参与者给予一些校园积分&#xff0c;学生们获得校园积分后可以使用校园积分在指定的老师那兑换一些学习用具&#xff0c;当前可兑换的物品和对应的积分数量如下&#xff1a;铅笔1分橡皮2分作业本3分文具盒5分为了…

函数指针示例

使用函数指针来调用 printf。下面是对代码的详细解释&#xff1a;&#x1f4c4; 源代码解析#include <stdio.h>int main() {int (*myshow)(const char *, ...); // 声明一个函数指针&#xff0c;指向可变参数函数printf("hello world!\n");myshow printf; /…