Ajax 原理是什么?如何实现?

article/2025/10/4 0:19:49

Ajax 原理是什么?如何实现?

    • 一、Ajax 原理是什么
    • 二、实现过程
        • 创建XMLHttpRequest对象
        • 与服务器建立连接
        • 给服务端发送数据
        • 绑定onreadystatechange事件
    • 三、封装

在这里插入图片描述

一、Ajax 原理是什么

AJAX全称(Async Javascript and XML)

即异步的JavaScript 和XML,是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,与服务器交换数据,并且更新部分网页

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面

流程图如下:

在这里插入图片描述
下面举个例子:

领导想找小李汇报一下工作,就委托秘书去叫小李,自己就接着做其他事情,直到秘书告诉他小李已经到了,最后小李跟领导汇报工作

Ajax请求数据流程与“领导想找小李汇报一下工作”类似,上述秘书就相当于XMLHttpRequest对象,领导相当于浏览器,响应数据相当于小李

浏览器可以发送HTTP请求后,接着做其他事情,等收到XHR返回来的数据再进行操作

二、实现过程

实现 Ajax异步交互需要服务器逻辑进行配合,需要完成以下步骤:

  • 创建 Ajax的核心对象 XMLHttpRequest对象

  • 通过 XMLHttpRequest 对象的 open() 方法与服务端建立连接

  • 构建请求所需的数据内容,并通过XMLHttpRequest 对象的 send() 方法发送给服务器端

  • 通过 XMLHttpRequest 对象提供的 onreadystatechange 事件监听服务器端你的通信状态

  • 接受并处理服务端向客户端响应的数据结果

  • 将处理结果更新到 HTML页面中

创建XMLHttpRequest对象

通过XMLHttpRequest() 构造函数用于初始化一个 XMLHttpRequest 实例对象

const xhr = new XMLHttpRequest();

与服务器建立连接

通过 XMLHttpRequest 对象的 open() 方法与服务器建立连接

xhr.open(method, url, [async][, user][, password])

参数说明:

  • method:表示当前的请求方式,常见的有GET、POST

  • url:服务端地址

  • async:布尔值,表示是否异步执行操作,默认为true

  • user: 可选的用户名用于认证用途;默认为`null

  • password: 可选的密码用于认证用途,默认为`null

给服务端发送数据

通过 XMLHttpRequest 对象的 send() 方法,将客户端页面的数据发送给服务端

xhr.send([body])

body: 在 XHR 请求中要发送的数据体,如果不传递数据则为 null

如果使用GET请求发送数据的时候,需要注意如下:

  • 将请求数据添加到open()方法中的url地址中
  • 发送请求数据中的send()方法中参数设置为null

绑定onreadystatechange事件

onreadystatechange 事件用于监听服务器端的通信状态,主要监听的属性为XMLHttpRequest.readyState ,

关于XMLHttpRequest.readyState属性有五个状态,如下图显示

在这里插入图片描述
只要 readyState属性值一变化,就会触发一次 readystatechange 事件

XMLHttpRequest.responseText属性用于接收服务器端的响应结果

举个例子:

const request = new XMLHttpRequest()
request.onreadystatechange = function(e){if(request.readyState === 4){ // 整个请求过程完毕if(request.status >= 200 && request.status <= 300){console.log(request.responseText) // 服务端返回的结果}else if(request.status >=400){console.log("错误信息:" + request.status)}}
}
request.open('POST','http://xxxx')
request.send()

三、封装

通过上面对XMLHttpRequest对象的了解,下面来封装一个简单的ajax请求

//封装一个ajax请求
function ajax(options) {//创建XMLHttpRequest对象const xhr = new XMLHttpRequest()//初始化参数的内容options = options || {}options.type = (options.type || 'GET').toUpperCase()options.dataType = options.dataType || 'json'const params = options.data//发送请求if (options.type === 'GET') {xhr.open('GET', options.url + '?' + params, true)xhr.send(null)} else if (options.type === 'POST') {xhr.open('POST', options.url, true)xhr.send(params)//接收请求xhr.onreadystatechange = function () {if (xhr.readyState === 4) {let status = xhr.statusif (status >= 200 && status < 300) {options.success && options.success(xhr.responseText, xhr.responseXML)} else {options.fail && options.fail(status)}}}
}

使用方式如下:

ajax({type: 'post',dataType: 'json',data: {},url: 'https://xxxx',success: function(text,xml){//请求成功后的回调函数console.log(text)},fail: function(status){请求失败后的回调函数console.log(status)}
})

http://chatgpt.dhexx.cn/article/iGNRIMUY.shtml

相关文章

Ajax 原理详解

名字的来历: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML) 优点是 在不刷新整个浏览器的情况下,与服务器交换数据并更新部分网页内容 AJAX是基于现有的Internet标准 AJAX是基于现有的Internet标准,并且联合使用它们: XMLHttpRequest 对象 (异步的…

原生js实现Ajax原理

相信很多小伙伴在面试的时候&#xff0c;大部分都逃不了被问原生js的问题吧&#xff0c;尤其是高频的高频&#xff0c;** 说一下实现原生Ajax的原理** 原生&#xff1f;&#xff1f;&#xff1f;哦买噶的&#xff01; 在回答这个问题前&#xff0c;我们需要了解一下什么是ajax…

Ajax原理

AJAX 即 Asynchronous Javascript And XML&#xff08;异步JavaScript和XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。 AJAX 是一种用于创建快速动态网页的技术。它可以令开发者只向服务器获取数据&#xff08;而不是图片&#xff0c;HTML文档等资源…

Ajax是什么以及Ajax交互原理(详,图文并茂,原理篇)

一 Ajax技术与原理 1.1 Ajax简介 Ajax Asynchronous JavaScript and XML (翻译成人话就是&#xff0c;异步的 javascript 和 XML 相结合的一种技术 ) 需要澄清的是&#xff0c;Ajax不是新的编程语言&#xff0c;而是一种 使用现有标准的新方法&#xff0c;还是一种 与服务器…

Ajax 原理总结

一 Ajax技术与原理 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 是与服务器交换数据并更新部分网页的技术&#xff0c;在不重新加载整个页面的情况下。 AJAX 的核心是 XMLHttpRequest 对象。 Ajax的工作原理 Ajax的工作…

Ajax基本原理与实现

Ajax 的全称是Asynchronous JavaScript and XML&#xff08;异步的JavaScript 和 XML&#xff09;&#xff0c;其中&#xff0c;Asynchronous 是 异步 的意思&#xff0c;它有别于传统web开发中采用的同步的方式。 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。…

总结 - Ajax工作原理和实现步骤

目录 一 Ajax技术与原理 1.1 Ajax简介 1.2 Ajax所包含的技术 1.3 Ajax的工作原理 1.4 XMLHttpRequest 对象的三个常用的属性 1. onreadystatechange 属性 2. readyState 属性 3. responseText 属性 1.5 xmlhttprequst的方法 1. open() 方法 2. send() 方法 二 Ajax…

迈瑞医疗软件测试笔试题

8月份去了面试。 一、测试设计题 题目:某手机软件中的通信数据&#xff0c;用户可在界面上进行浏览&#xff0c;并可选择想要的数据导出到U盘。如下图所示:请你对“导出”功能进行测试分析&#xff0c;提取测试点&#xff0c;并设计测试用例。&#xff08;界面大概如下所示&a…

软件测试笔试题

1、选择题 1、下列关于alpha测试的描述中正确的是&#xff08;BD&#xff09; A alpha测试需要用用户代表参加 B alpha测试不需要用用户代表参加 C alpha测试是系统测试的一种 D alpha测试是验收测试的一种 2、软件质量的定义&#xff08;D&#xff09; A 软件的功能性、可…

最近面试的软件测试笔试题笔试题(已整理参考答案)

1.常见的测试用例设计方法都有哪些&#xff1f;分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 1. 等价类划分 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值…

.Net 7 Native AOT 单文件 无依赖 跨平台

2022.11.18 Native AOT 正式发布&#xff0c;不再是 实验性项目。 .Net 7 Console App & WebApi 使用PublishAOT true&#xff0c;直接编译 成exe&#xff0c;无rutime依赖&#xff0c;智能裁剪&#xff0c;体积小&#xff0c;启动快。 环境&#xff1a; 1.更新VS2022 …

AOT和单文件发布对程序性能的影响

AOT和单文件发布对程序性能的影响 以前的.NET框架原生并不支持最终编译结果的单文件发布&#xff08;需要依赖第三方工具&#xff09; 1. 前言 这里先和大家介绍一下.NET一些发布的历史&#xff0c;以前的.NET框架原生并不支持最终编译结果的单文件发布&#xff08;需要依赖…

JIT与AOT

名词解释&#xff1a; JIT&#xff08;JUST - IN -TIME&#xff09;实时编译 AOT&#xff08;AHEAD-OF-TIME&#xff09;预先编译 它们两者最根本的区别&#xff0c;就在于编译代码的时机&#xff0c;所谓的编译代码&#xff0c;就是把人类写的代码&#xff0c;翻译成机器字节…

Spring6和SpringBoot3的新特性-你不得不了解的AOT原来这么简单

Spring6.0新特性 一、Spring的发展历史 二、AOT AOT是Spring6.0提供的一个新特性&#xff0c;Ahead of Time 提前编译。 1.AOT概述 1.1 JIT和AOT的关系 1.1.1 JIT JIT(Just-in-time) 动态编译&#xff0c;即时编译&#xff0c;也就是边运行边编译&#xff0c;也就是在程序运…

JIT VS AOT

一、AOT&#xff0c;JIT是什么 JIT&#xff0c;即Just-in-time,动态(即时)编译&#xff0c;边运行边编译&#xff1b;AOT&#xff0c;Ahead Of Time&#xff0c;指运行前编译&#xff0c;是两种程序的编译方式 理解 jit、aot 程序主要有两种运行方式&#xff1a;静态编译与动…

对比JIT和AOT,各自的优点与缺点

编译器和解释器是什么 编译器和解释器的区别在于是否编译和执行过程是否是同时进行。 编译器所干的事&#xff0c;将一门语言 X 编译为另一门语言 Y &#xff08;可以是语言 X、高级语言、低级语言等&#xff09;&#xff0c;整个编译过程涉及词法分析、语法分析、语义分析。…

AOT(超前编译)实例分析

文章目录 一、背景二、具体实施2.1 tfcomfile 是什么&#xff1f;2.2 tfcompile 的功能是什么&#xff1f;2.3使用tfcompile 三、总结 一、背景 前边已经了解了JIT和AOT的基本概念&#xff0c;AOT(提前编译)方式就是在代码执行阶段之前全部编译成目标指令&#xff0c;进入执行…

Java在云原生的破局利器——AOT(JIT与AOT)

导读 JIT&#xff08;Just-in-Time&#xff0c;实时编译&#xff09;一直是Java语言的灵魂特性之一&#xff0c;与之相对的AOT&#xff08;Ahead-of-Time&#xff0c;预编译&#xff09;方式&#xff0c;似乎长久以来和Java语言都没有什么太大的关系。但是近年来随着Serverles…