原生ajax运行原理,【前端自学之路】JS之原生AJAX原理

2023-11-08

Javascript Ajax 原理

什么是 AJAX

AJAX(Asynchronous JavaScript and XML) 异步Javascript 和 XML

AJAX 是指一种创建动态网页的开发技术

说白话点:

AJAX 就是允许JS和后台服务器进行数据交互

AJAX 的原生实现

任何AJAX库或者框架,都是基于原生的AJAX实现的在这里我们先忽略兼容性问题 ActiveXObject

原生的AJAX实现有四步:

第一步

创建XMLHttpRequest,就可以通过这个对象和服务器进行交互了IE旧版本1var xh = new ActiveXObject('Microsoft.XMLHTTP');

W3C标准实现1var xhr = new XMLHttpRequest();

第二步

通过 XMLHttpRequest对象的 open方法初始化请求

XMLHttpRequest.open(method, url, async, use, password)method,要使用的HTTP方法,如 GET、POST、PUT 等

url 发送请求的url

asyc [可选] 默认为true表示异步操作,false则为同步操作

user [可选] 默认为null 可选的用户名用于认证

password [可选] 默认为null 可选的密码用于认证1xh.open('GET', 'https://www.baidu.com');

第三步

onreadystatechange 监听请求变化过程

XMLHttpRequest.onreadystatechange = function(){}

只要readyState属性变化的时候,就会调用回调处理函数当请求被 abort() 的时候,事件就不会被触发,事件处理函数也不会被调用1

2

3xhr.onreadystatechange = function (){

// do something when readyState change

};

第四步

正式发送出HTTP请求

XMLHttpRequest.send(DataBuffer)

对于异步请求,这个函数执行后会立马返回

对于同步请求,这个函数会等待请求返回后才返回

函数接收一个参数,表示要发送的数据1xhr.send('Helloworld');

总结

我们来看完整的AJAX原理步骤1

2

3

4

5

6

7var xhr = new XMLHttpRequest();

xhr.open('GET', 'https://www.shuipingguo.com/2h4g/getvideo/search?kw=%E5%80%9A%E5%A4%A9', true);

xhr.onreadystatechange = function(xhr){

console.log(JSON.parse(xhr.target.response));

};

xhr.send();

在浏览器控制台上执行结果:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18data: [

{

author: ""

country: 0

id: 56

img: "http://puui.qpic.cn/qqvideo_ori/0/p0859dffl2v_496_280/0"

imgv: "//puui.qpic.cn/vcover_vt_pic/0/ha7r9z89i9d234y1553076483/220"

max: 50

name: "倚天屠龙记"

number: 50

score: 8

summary: ""

type: 2

url: "//m.v.qq.com/x/cover/h/ha7r9z89i9d234y.html"

vip: 10

},

]

retcode: 0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原生ajax运行原理,【前端自学之路】JS之原生AJAX原理 的相关文章

  • APP爬虫入门,Appium+Mitmproxy强势组合实现抖音的数据爬取

    APP爬虫入门 Appium Mitmproxy强势组合实现抖音的数据爬取 最近一直在研究APP的爬虫实现 前面文章讲了虚拟机和Appium环境的搭建 和 SSL PINNING的解决方法 主要难点在于解决APP开启SSL Pinning导
  • property received type-uncompatible value: expected <Array> but got non-array value.

    Component property received type uncompatible value expected
  • JSP基础总结+例题

    1 什么是JSP Java Server Pages 1 1概述 简化的Servlet设计 在HTML标签中嵌套Java代码 用以更新开发Web应用的动态网页 JSP文件在容器中会转换成Servlet执行 JSP是对Servlet的一种高级
  • 笔记记录--Docker使用WVP-Pro网络视频平台

    1 Docker拉取镜像 镜像地址 docker镜像地址 docker pull 648540858 wvp pro docker run env WVP IP 192 168 18 61 it p 18080 18080 p 30000
  • Ag-grid在vue中使用的必要属性

    文档链接 id myGrid 唯一标识 gridReady 渲染完成后的事件 defaultColDef this defaultColDef 默认定义 所有的列都有的属性 context this context componentPar
  • 阿里巴巴——三面,面试经历记录

    在 boss 直聘上无意间看到了阿里巴巴菜鸟网络的招聘信息 现在的部门已经有两名同学被蚂蚁金服录取了 自己就不服气的也想试试 这次面试其实并没有准备充分 之前就听说总共有很多轮数 不仅会考察基础知识的深度 也会考察算法能力 项目设计能力 价
  • 精准测试之过程与实践

    作者 京东工业 宛煜昕 一 怎样的技术 百度百科 精准测试是一套计算机测试辅助分析系统 精准测试的核心组件包含的软件测试示波器 用例和代码的双向追溯 智能回归测试用例选取 覆盖率分析 缺陷定位 测试用例聚类分析 测试用例自动生成系统 这些功
  • image caption问题为什么需要spatial attention

    参考论文 SCA CNN Spatial and Channel wise Attention in Convolutional Networks for Image Captioning image caption是一个image to
  • android 经纬度 谷歌,android:GPS获取location经纬度并用谷歌解析为地理位置名称

    实现的功能 先获取本地的经纬度 再根据经纬度 请求googleapis来解析地理位置名称 下面的例子 能够跑起来 亲测 多说无益 看码 首先搞一个布局 其实就是一个textView 一个button 点击button后 在textview展
  • python3 赋值列表sort打印出None的解决方法

    d 42 62 78 19 13 53 67 35 sort print d d 42 62 78 19 13 53 67 35 print d sort 结果如下 None None 列表创建了之后 执行列表排序 不在变量里排序 因为so
  • python 大学排行网站全部排行数据

    RANKINGS CRAWLER 中国大学排名 中国两岸四地排名 全球体育类院系大学排行 世界大学学术排名 中国最好学科排名 中国大学专业排名 世界一流学科排名 每个专业学科排行都有 方法跟实际代码有变动 方法一 获取中国大学排名 中国两岸
  • js逆向-某市公共资源交易网

    目标网站首页 aHR0cDovL2dnenkuendmd2IudGouZ292LmNu 分析页面 aHR0cDovL2dnenkuendmd2IudGouZ292LmNuL3h3engvaW5kZXhfMi5qaHRtbA 话不多说 开始今
  • 使用systemctl命令启动和关闭mysql

    以前都用service命令管理mysql 现在liunx系统升级了 又有了新的更好的方法管理系统进程 现在我们来学习如何用systemctl命令管理mysql Systemctl是一个systemd工具 主要负责控制systemd系统和服务
  • P5367 【模板】康托展开【树状数组优化】

    题目链接 include
  • DCIC-A城市巡游车与网约车运营特征对比分析-2-可视化

    接前述 数据读取 上次遗留下两个问题 1 该案例的数据集过多 如果每次读一个数据的部分行 比如10000行 那在拼接所有数据集的时候也是每个数据只读10000行吗 回答 虽然我们通过更改数据类型 使得原始数据的大小有所改变 但如果想要把所有
  • 人工智能数据标注案例之人脸识别案例

    人工智能是未来的发展趋势 人脸识别是人工智能应用最为广泛的一项技术 在现实生活中 我们使用的支付宝 微信的安全验证 智能手机的人脸解锁功能等都运用到了人脸识别 作为人工智能发展的三大要素之一 数据的作用不可小觑 其中数据采集与数据标注是数据
  • MATLAB图像识别技术在棉花叶面病虫害识别上的

    MATLAB图像识别技术在棉花叶面病虫害识别上的应用 摘 要 棉花是新疆地区种植最为广泛的经济作物 利用MATLAB图像识别技术将相机采集到的患病棉花叶面经过图像灰度化 图像增强 图像二值化 图像形态学处理 图像填充 图像分割等预处理后用函
  • C语言数组第十课---------------三子棋-------数组经典练手题

    作者前言 作者介绍 作者id 老秦包你会 简单介绍 喜欢学习C语言和python等编程语言 是一位爱分享的博主 有兴趣的小可爱可以来互讨 个人主页 小小页面 gitee页面 秦大大
  • 使用MATLAB GUI实现运动目标追踪

    使用MATLAB GUI实现运动目标追踪 物体追踪是计算机视觉中的一个重要研究领域 它可以应用于自动驾驶 智能监控等多个领域 本篇文章将介绍如何使用MATLAB GUI实现运动目标的追踪 并给出相应的源代码 前置知识 在开始之前需要掌握以下

随机推荐

  • 程序静态分析第一课

    程序静态分析第一课 该课程主要内容来自北京大学熊英飞老师的 软件分析技术 事例一 飞机为了保证飞行安全 在很多设备上会设置冗余设备 一般来说都是一主二备三应急 一架飞机上同样功能的设备设施 会安装起码三套或更多来应付其中一套出故障而导致飞机
  • pe中怎么卸载服务器系统更新,如何卸载win7系统更新用pe装win7

    缺省设置 724 512M物理内存 改变命令 代码如下 sysctl w vm vfs cache pressure 200 sysctl w vm min free kbytes 1024 通过本次的分享我们在使用参数优化的时候遇到的问题
  • html标签(下)----常用高级标签

    下列代码可直接运行 br br br br br 空 nbsp nbsp nbsp 格 div style width 400px height 60px background color darkgrey div
  • Oracle锁机制

    增删改查中查询不需要锁 即使数据被锁定也能在还原信息中查询出锁定之前的值 其余三项均会使用行级锁 直到用户commit或rollbak 锁是在指定语句的最低可能级别自动获取的 增删改获取行级锁而不是块级或表级 修改对象 如移动表 会获取对象
  • 朝代官制,6部是什么

    六部 六部就是我们所熟知的 吏 户 礼 兵 刑 工 它是隋唐以来中央行政机构中的重要一极 隋唐开创的三省六部制最早可以追溯至西周时期 但史料对此记载颇少 当时相应的中央行政机构所管辖的职能远远没有后世开创的六部职能完善 秦朝开创了三公九卿制
  • 星际争霸2神族全兵种介绍

    星际争霸2神族全兵种介绍 貌似很多兵种啊 而且根据目前的demo 兵种相克非常明显的话游戏节奏可能变慢 不知道可玩性会不会像1那么高 星际2神族全兵种公布 2007 6 18 作者 OGame NeT Sodoes 更多精彩尽在神州论坛 翻
  • 一个在终端实现类Linux shell(cd ls命令)UI界面的项目(C语言实现)

    一个在终端实现类Linux shell cd ls命令 UI界面的功能 C语言实现 这2天做了一个类似Linux shell的UI界面 目前已初步完成cd ls help pwd quit等命令 在Linux下实现 效果图见下图 ls命令
  • websocket深入浅出

    websocket简介 websocket是什么 答 它是一种网络通信协议 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 为什么需要websocket 疑问 我们已经有了 HTTP 协议 为什么还需要另一个协议
  • [STM32WBA]【STM32WBA52CG测评】-3- 蓝牙BLE:LED与button例程分析

    STM32WBA52CG是支持蓝牙BLE 5 3 官方提供的STM32Cube FW WBA V1 1 0资料包中提供了一个非常好的入门案例 BLE p2pServer 准备材料 Keil ST BLE Toolbox 图形化配置时钟 主要
  • QT安装mqtt环境(这里默认以及有了QT)

    首先 QT的版本和mqtt包的版本要一致 我这里QT和mqtt的版本都是5 14 2 QT安装包 5 14 2 下载地址 Index of archive qt 5 14 mqtt包的一个连接 可以选择相应的版本 GitHub qt qtm
  • eclipse easyui 正常代码老是报错 红色波浪线

    即使交换位置 手敲行依旧报错 看了三篇 还是看不出问题 关于正确代码会出现很多红色波浪线 网上的办法是把eclipse软件关闭 然后重新启动即可消除 但是这种方法有个弊端 当再次编辑的时候依旧很出现很多波浪线 尝试了以下两种方法 https
  • Retrofit 2.5 框架使用与源码分析

    Retrofit 2 5 框架使用与源码分析 Retrofit 框架使用 请求内容与返回值 使用PostMan进行请求测试 请求 https api github com search repositories q android 返回值
  • 【计算机视觉

    文章目录 一 检测相关 7篇 1 1 Vehicle Occurrence based Parking Space Detection 1 2 Squeezing nnU Nets with Knowledge Distillation f
  • LeetCode--Intersection of Two Linked Lists (两个链表的交点)Python

    题目 给定两个链表 求这两个链表的交点 若没有交点 则返回空 样例如下 返回交点c1 解题思路 思路1 暴力思路 n方复杂度 对两个链表分别进行遍历 找到相同的节点即可O n m 空间复杂度为O 1 思路2 使用哈希表 即python中的字
  • 6-6 找素数并保存到数组中

    本题目要求查找n m之间所有素数 存入一维数组a中 函数接口定义 int fun int n int m int a 其中 a 为存储的素数 函数返回素数的个数 裁判测试程序样例 include
  • 编译工具链和交叉编译工具链简易说明

    文章目录 编译工具链 交叉编译工具链 编译工具链 做C C 开发特别是嵌入式方向的肯定会涉及编译工具链和交叉编译工具链相关内容 C C 的程序需要经过 gcc 等编译成二进制程序才能被计算机使用 这里的 gcc 通常是泛指 包括 gcc g
  • 关于stm32下载提示internal command error错误提示解决办法

    问题背景 最近新制作了一个关于stm32的PCB PCB电源供电是由12V降压5V 再降压到3 3V 并且预留了3 3V电源接口 打样贴片完成后准备下载程序 一开始我是为了测试方便 没有用12V供电 直接连接stlink 并且用了电脑5V降
  • 高效大数据开发之 bitmap 思想的应用

    作者 xmxiong PCG 运营开发工程师 数据仓库的数据统计 可以归纳为三类 增量类 累计类 留存类 而累计类又分为历史至今的累计与最近一段时间内的累计 比如滚动月活跃天 滚动周活跃天 最近 N 天消费情况等 借助 bitmap 思想统
  • mysql主从配置问题汇总及如何查看数据库的日志

    一 Could not execute Delete rows event on table yxjmanage ums user Can t find record in ums user Error code 1032 handler
  • 原生ajax运行原理,【前端自学之路】JS之原生AJAX原理

    Javascript Ajax 原理 什么是 AJAX AJAX Asynchronous JavaScript and XML 异步Javascript 和 XML AJAX 是指一种创建动态网页的开发技术 说白话点 AJAX 就是允许J