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

JS中的Ajax

封装原生 Ajax 请求

在 JavaScript 中,可以通过封装原生的 Ajax 请求来进行与服务器的数据交互。下面是一个封装了原生 Ajax 请求的示例代码,以及对代码的详细注解。

1.简单的Ajax封装代码

 <h2>ajax原生</h2><script>//1.创建xhr对象var xhr = new XMLHttpRequest();//2.准备发送('请求方式get/post','url地址',boolean)布尔值是异步,默认为truexhr.open('get','ajax.php',true)//3.发送 send(),get请求send()为空,xhr.send();//4.监听函数//备注,监听当前ajax请求,经行到哪一步,xhr.onreadystatechange=function(){//状态改变,5种状态if(xhr.readyState===4&&xhr.status===200){console.log(xhr.responseText)}}    </script>

2.标准的Ajax封装代码

/*** 发起 Ajax 请求* @param {string} method - 请求方法,如 'GET' 或 'POST'* @param {string} url - 请求 URL* @param {object} data - 请求数据,可选* @param {function} successCallback - 请求成功的回调函数,可选* @param {function} errorCallback - 请求失败的回调函数,可选*/
function ajaxRequest(method, url, data, successCallback, errorCallback) {// 创建 XMLHttpRequest 对象var xhr = new XMLHttpRequest();// 监听请求状态变化xhr.onreadystatechange = function () {if (xhr.readyState === XMLHttpRequest.DONE) {if (xhr.status === 200) {// 请求成功if (successCallback) {successCallback(xhr.responseText);}} else {// 请求失败if (errorCallback) {errorCallback(xhr.status);}}}};// 打开请求xhr.open(method, url, true);// 设置请求头xhr.setRequestHeader('Content-Type', 'application/json');// 发送请求if (data) {xhr.send(JSON.stringify(data));} else {xhr.send();}
}

上述代码封装了一个名为 ajaxRequest 的函数,用于发起 Ajax 请求。下面是对函数参数和代码逻辑的详细注解:

  • method:请求方法,可以是 'GET''POST' 等。
  • url:请求的 URL。
  • data:请求的数据,可选参数。如果需要向服务器发送数据,可以通过这个参数传递。
  • successCallback:请求成功的回调函数,可选参数。当请求成功时,将调用此函数,并将服务器返回的响应文本作为参数传递给它。
  • errorCallback:请求失败的回调函数,可选参数。当请求失败时,将调用此函数,并将 HTTP 状态码作为参数传递给它。

在函数内部,首先创建了一个 XMLHttpRequest 对象,用于发送 Ajax 请求。然后通过监听 xhr 对象的 onreadystatechange 事件,来处理请求状态的变化。

xhr.readyState 的值等于 XMLHttpRequest.DONE 时,表示请求已完成。此时,根据 xhr.status 的值判断请求成功还是失败。如果 xhr.status 的值等于 200,表示请求成功,调用 successCallback 函数并将服务器返回的响应文本作为参数传递给它;否则,表示请求失败,调用 errorCallback 函数并将 HTTP 状态码作为参数传递给它。

接下来,使用 xhr.open 方法打开请求,并使用 xhr.setRequestHeader 方法设置请求头为 'Content-Type': 'application/json'。最后,使用 xhr.send 方法发送请求,如果存在 data 参数,则将其转换为 JSON 字符串并发送。

通过调用 ajaxRequest 函数,可以方便地发起 Ajax 请求,并通过传递回调函数来处理请求的结果。

http://www.lryc.cn/news/135297.html

相关文章:

  • ImportError: cannot import name ‘SQLDatabaseChain‘ from ‘langchain‘解决方案
  • npm、yarn和pnpm
  • SparkSQL源码分析系列02-编译环境准备
  • 【计算机网络】日志与守护进程
  • 设计模式之职责链模式(ChainOfResponsibility)的C++实现
  • CGAL Mesh(网格数据)布尔操作
  • 技术分享| WebRTC之SDP详解
  • Flink Table API/SQL 多分支sink
  • Vue3 中 导航守卫 的使用
  • 云原生概论
  • hive-sql
  • Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)
  • 基于centos7完成docker服务的一些基础操作
  • Microsoft Visual Studio + Qt插件编程出现错误error MSB4184问题
  • QT Quick之quick与C++混合编程
  • Ros noetic Move_base 相关状态位置的获取 实战使用教程
  • 【SpringBoot】SpringBoot项目与Vue对接接口的步骤
  • Glog安装与使用
  • windows开发环境搭建
  • 8月17日上课内容 第三章 LVS+Keepalived群集
  • Threejs学习05——球缓冲几何体背景贴图和环境贴图
  • LVS+Keepalived群集实验
  • 软考高级之系统架构师之系统开发基础
  • Web 3.0 安全风险,您需要了解这些内容
  • 万宾科技22款产品入选《城市生命线安全工程监测技术产品名录》
  • MFC 隐藏窗口
  • Java数据库连接池原理及spring boot使用数据库连接池(HikariCP、Druid)
  • 百度商业AI 技术创新大赛赛道二:AIGC推理性能优化TOP10之经验分享
  • 微服务时代java异常捕捉
  • Hadoop支持LZO压缩