【ajax核心01】ajax底层原理

目录

一:XMLHttpRequest对象

二:如何使用XHR

步骤:

注意:

三:XMLHttpRequest-请求参数

1 定义:

2 案例练习

前端HTML结构:

JS代码

四:XMLHttpRequest-数据提交

核心

 五:如何赚钱

一:XMLHttpRequest对象

节选自MDN网站

XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest 在 AJAX 编程中被大量使用。

axios函数内部采用XMLHttpRequest对象与服务器交互

二:如何使用XHR

步骤:

  1. 创建XMLHttpRequest对象
  2. 配置请求方法和请求url地址
  3. 监听loadend事件,接收响应结果
  4. 发送请求

注意:

利用底层XHR对象获取数据,返回的是对象结构的json字符串,如下图所示。要利用JSON.parse(xhr.response)将对象结构的字符串转化为JS对象

而利用axios,会将返回的数据(json字符串)转换回JS对象

三:XMLHttpRequest-请求参数

1 定义:

浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据

利用axios函数携带查询参数,只需要配置params属性。但是XHR对象携带查询参数,需要在配置的url后面利用拼接方式携带

其使用方式利用模板字符串为其赋值

2 “查”案例练习

需求:输入省份名字和城市名字提交给服务器后,查询到对应的地区列表

前端HTML结构:

<!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>案例_地区查询</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"><style>:root {font-size: 15px;}body {padding-top: 15px;}</style>
</head><body><div class="container"><form id="editForm" class="row"><!-- 输入省份名字 --><div class="mb-3 col"><label class="form-label">省份名字</label><input type="text" value="北京" name="province" class="form-control province" placeholder="请输入省份名称" /></div><!-- 输入城市名字 --><div class="mb-3 col"><label class="form-label">城市名字</label><input type="text" value="北京市" name="city" class="form-control city" placeholder="请输入城市名称" /></div></form><button type="button" class="btn btn-primary sel-btn">查询</button><br><br><p>地区列表: </p><ul class="list-group"><!-- 示例地区 --><li class="list-group-item">东城区</li></ul></div><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</body></html>

JS代码

实现方法1,利用模板字符串自动拼接方式
  <script>/*** 目标: 根据省份和城市名字, 查询对应的地区列表*/document.querySelector('.sel-btn').addEventListener('click', () => {const province = document.querySelector('.province').valueconst city = document.querySelector('.city').valueconst xhr = new XMLHttpRequest()xhr.open('get', `https://hmajax.itheima.net/api/area?pname=${province}&cname=${city}`)xhr.addEventListener('loadend', () => {// console.log(xhr.response);const arr = JSON.parse(xhr.response).listconst city = arr.map((element, index) => `<li class="list-group-item">${element}</li>`).join('')document.querySelector('.list-group').innerHTML = city})xhr.send()})</script>
实现方法2,利用URLSearchParams对象实现自动拼接

语法格式

//1 创建URLSearchParams对象
const paramsObj = new URLSearchParams({参数名1:值1,参数名2:值2
})
//2 生成指定格式查询参数 字符串
const queryString = paramsObj.toString()
//结果:参数名1=值1&参数名2=值2
 document.querySelector('.sel-btn').addEventListener('click', () => {const province = document.querySelector('.province').valueconst city = document.querySelector('.city').valueconst paramsObj = new URLSearchParams({pname: province,cname: city})const queryString = paramsObj.toString()const xhr = new XMLHttpRequest()
//将字符串在?后面实现拼接xhr.open('get', `https://hmajax.itheima.net/api/area?${queryString}`)xhr.addEventListener('loadend', () => {// console.log(xhr.response);const arr = JSON.parse(xhr.response).listconst city = arr.map((element, index) => `<li class="list-group-item">${element}</li>`).join('')document.querySelector('.list-group').innerHTML = city})xhr.send()})

四:XMLHttpRequest-数据提交

将原本axios携带对象的data属性(请求体数据)中的数据,转而利用XHR对象方式提交数据

核心

请求头设置Content-Type:application/json

请求体携带JSON字符串

具体步骤如下:

 五:如何赚钱

现在是否厌倦了程序员朝九晚五的生活,想给自己生活寻找另一条路径;在校大学生是否愿意在校进行人生中的第一次创业,获取人生第一桶金;是否正在看此篇文章的你愿意通过五年努力,让自己开上梦想的中的车子;

那就从提升认知开始,加入微木的知识星球:微木的创业思考

专属于创业者的交流集中地,创业、认知提升找微木!

1 创业底层方法论

2 从千万本书书籍中挑选出的,人生必读书目清单。

3 认知提升学习资源(秘密)

4 寻找赚钱项目底层方法论

5 好书精华提炼

6 深度链接微木

每天仅需0.3元/天,欢迎加入专属于创业者的交流集中地,创业、认知提升找微木!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/360195.html

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

相关文章

实现一个查找算法

/实现一个查找算法 public class Test_35 {public static int linearSearch(int[] arr, int target) {for (int i 0; i < arr.length; i) {if (arr[i] target) {return i; // 返回目标元素的索引}}return -1; // 如果未找到目标元素&#xff0c;则返回-1}public static vo…

Spring Boot基础入门

引言 Spring Boot是一个开源的Java框架&#xff0c;旨在简化Spring应用程序的创建和部署过程。它提供了一种快速和简便的方式来创建独立的、生产级别的基于Spring的应用程序。本文将介绍Spring Boot的基础知识&#xff0c;包括其核心特性、如何开始使用Spring Boot以及构建你的…

百度大模型安全荣获2024世界智能产业博览会“Find智能科技创新应用典型案例”

6月20日&#xff0c;2024世界智能产业博览会在天津开幕。会议聚焦人工智能、智能网联汽车、智能制造等年度热点议题&#xff0c;由世界智能产业博览会组委会指导&#xff0c;世界智能产业博览会组委会秘书处、中国新一代人工智能战略发展研究院、中国软件行业协会、中国网络空间…

swp添加池子addLiquidity失败

案发现场 首次添加交易对、一直失败、但是也没提示具体的原因。到这一步就没了、由下图可知、也没看到log、由此可见第一步就失败了。 解决方案 一、添加 工厂KywFactory 添加如下 bytes32 public constant INIT_CODE_PAIR_HASH keccak256(abi.encodePacked(type(KywPair…

土耳其-加拉太塔

加拉太塔&#xff08;Galata Tower&#xff09;是位于土耳其-伊斯坦布尔的一个著名地标&#xff0c;它提供了城市的壮丽全景。如果有计划前往这座塔楼打卡的话&#xff0c;可以先了解下这座历史悠久的塔楼&#xff0c;让自己感兴趣&#xff0c;才能体会到它的独特之处&#xff…

Web渗透-XSS漏洞深入及xss-labs靶场实战

一、简介 xss全称&#xff08;cross site scripting)跨站脚本攻击&#xff0c;是最常见的web应用程序安全漏洞之一&#xff0c;位于owasptop102013年度第三名xss是指攻击者在网页中嵌入客户端脚本&#xff0c;通常是javascrip编写的危险代码&#xff0c;当用户使用浏览网页时&…

excel数据透视

Excel中&#xff0c;数据透视图&#xff08;PivotChart&#xff09;和数据透视表&#xff08;PivotTable&#xff09;是两个紧密相关的工具&#xff0c;用于分析数据。数据透视表是数据透视图的数据源&#xff0c;也就是说&#xff0c;数据透视图是基于数据透视表中的数据创建的…

周末设计高端企业_集团官网主题Discuz模板

风格名称: 周末设计_高端企业_集团官网 适用版本: Discuz! X3.0、X3.1、X3.2、X3.3、F1.0 风格编码: 使用语言包结构&#xff0c;适合全部编码 周末设计高端企业_集团官网主题Discuz模板

防止多次点击,vue的按钮上做简易的防抖节流处理

话不多说,上个视频,看看是不是你要的效果 防抖节流 1.创建一个directive.js // directive.js export default {install(Vue) {// 防重复点击(指令实现)Vue.directive(repeatClick, {inserted(el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabl…

我对ChatGPT-5的期待

在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经成为我们生活中不可或缺的一部分。尤其是近年来&#xff0c;随着ChatGPT等先进AI模型的推出&#xff0c;我们见证了AI技术在智能水平上的巨大飞跃。作为这一领域的最新成果&#xff0c;GPT-5的即将发布…

电脑开机后出现Aptio Setup Utility 处理方法

电脑开机后出现Aptio Setup Utility怎么处理 Aptio Setup Utility界面的原因&#xff1a; 这是由于 bios设置与真实的硬件情况不匹配硬盘故障找不到可启动的硬盘情况 我的问题是找不到可启动的硬盘情况 解决方式如下&#xff1a; 进入如下界面了&#xff0c;选择Boot选项…

yolov10--C#接口

一、前言 本章主要讲解yolov10的C#接口&#xff0c;主要是使用微软开发的openvinocsharp工具加载yolov10模型&#xff0c;并做推理。 二、yolov10模型转换 这里为了演示&#xff0c;使用官方yolov10m模型&#xff08;其他大小的模型同理&#xff09;做演示&#xff0c;可从下方…

动态规划数字三角形模型——AcWing 275. 传纸条

动态规划数字三角形模型 定义 动态规划数字三角形模型是在一个三角形的数阵中&#xff0c;通过一定规则找到从顶部到底部的最优路径或最优值。 运用情况 通常用于解决具有递推关系、需要在不同路径中做出选择以达到最优结果的问题。比如计算最短路径、最大和等。 计算其他…

服务器数据恢复—NTFS文件系统下双循环riad5数据恢复案例

服务器存储数据恢复环境&#xff1a; EMC CX4-480存储&#xff0c;该存储中有10块硬盘&#xff0c;其中有3块磁盘为掉线磁盘&#xff0c;另外7块磁盘组成一组RAID5磁盘阵列。运维人员在处理掉线磁盘时只添加新的硬盘做rebuild&#xff0c;并没有将掉线的硬盘拔掉&#xff0c;所…

重点!业内分享:如何找到自己门店的生鲜经营定位

说到经营生鲜品类 许多商超人士或许都会面临这样一个困境 即品类繁多且复杂&#xff0c;那么如何做到精准施策&#xff1f; 比如说&#xff0c;蔬菜和水果虽都归为生鲜&#xff0c;然而细分起来&#xff0c;价格和消费群体均存在差异。像蔬菜&#xff0c;价格通常较低&#…

docker入门配置

1、创建配置镜像 由于国内docker连接外网速度慢&#xff0c;采用代理 vi /etc/docker/daemon.json添加以下内容 {"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com","https://dockerproxy.com","https://hub-mirror.c.163.co…

Python开发日记--手撸加解密小工具(2)

目录 1. UI设计和代码生成 2.运行代码查看效果 3.小结 1. UI设计和代码生成 昨天讨论到每一类算法设计为一个Tab&#xff0c;利用的是TabWidget&#xff0c;那么接下来就要在每个Tab里设计算法必要的参数了&#xff0c;这里我们会用到组件有Label、PushButton、TextEdit、Ra…

第4讲:pixi.js绘制舞台、随窗口大小而改变画布大小和舞台位置

基于前面写的代码&#xff0c;在gamelets的工程目录下新建一个CanvasAndStage.ts 代码如下 import {Application, Graphics} from pixi.js; // 不要忘了&#xff0c;一定要引用这个css样式&#xff0c;否则就会以默认样式显示 import ./style.css // app.view就是画布&#xf…

使用JAVA代码实现发送订阅消息以及模板消息

今天写了一个商品到货提醒的job任务&#xff0c;具体效果如下 这里用到了微信的发送订阅消息&#xff0c;主要代码是这一块的&#xff0c;最后我把发送了消息的订单存到表里&#xff0c;因为是定时任务&#xff0c;大家可不存 发送订阅消息 | 微信开放文档 /*** 微信平台-商品…

<电力行业> - 《第1课:电力行业的五大四小》

1 什么是电力行业的五大四小&#xff1f; 我们常说的电力行业的五大四小&#xff0c;指的是电力行业有实力的公司&#xff0c;分为&#xff1a;较强梯队的五大集团、较弱梯队的四小豪门。 五个实力雄厚的集团&#xff0c;分别是&#xff1a; 中国华能集团公司中国大唐集团公…