用于 AJAX 调用的 XMLHttpRequest
XMLHttpRequest (XHR) 对象是 JavaScript 的一项核心功能,它允许您从服务器异步发送和接收数据,而无需刷新网页。它构成了 AJAX(异步 JavaScript 和 XML)的基础,支持动态和交互式 Web 应用程序。
1.什么是 XMLHttpRequest?
XMLHttpRequest 是 JavaScript 中的 API,可促进通过 HTTP 请求与服务器进行通信。它支持:
- 无需重新加载页面即可检索数据。
- 处理各种格式,如 JSON、XML、HTML 和文本。
- 同步和异步操作(尽管在大多数用例中不推荐使用同步模式)。
2.创建 XMLHttpRequest 对象
要使用 XHR,请创建 XMLHttpRequest 对象的实例:
const xhr = new XMLHttpRequest();
3.进行 XHR 调用的步骤
- 创建 XHR 对象:
const xhr = new XMLHttpRequest();
- 初始化请求: 使用 open() 方法定义 HTTP 方法、URL 以及调用是否异步。
xhr.open("GET", "https://api.example.com/data", true);
- 设置响应回调: 使用 onreadystatechange 事件或 load 事件。
xhr.onload = function () { if (xhr.status === 200) { console.log("Response:", xhr.responseText); } else { console.error("Error:", xhr.status, xhr.statusText); } };
- 发送请求:
xhr.send();
4.完整示例:GET 请求
const xhr = new XMLHttpRequest(); xhr.open("GET", "https://jsonplaceholder.typicode.com/posts", true); xhr.onload = function () { if (xhr.status === 200) { console.log("Data retrieved:", JSON.parse(xhr.responseText)); } else { console.error("Failed to fetch data. Status:", xhr.status); } }; xhr.onerror = function () { console.error("Request failed due to a network error."); }; xhr.send();
5.使用 POST 请求发送数据
XHR 允许使用 POST 向服务器发送数据。
示例:
const xhr = new XMLHttpRequest(); xhr.open("POST", "https://jsonplaceholder.typicode.com/posts", true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onload = function () { if (xhr.status === 201) { console.log("Data saved:", JSON.parse(xhr.responseText)); } else { console.error("Error:", xhr.status); } }; const data = JSON.stringify({ title: "foo", body: "bar", userId: 1 }); xhr.send(data);
6. XHR 的属性和方法
关键属性:
-
readyState:代表请求的状态(0到4)。
- 0:未发送
- 1:打开
- 2:标头_已接收
- 3:加载中
- 4:完成
status:HTTP 状态代码(例如,200 表示成功,404 表示未找到)。
responseText:响应正文作为文本字符串。
responseXML:XML 数据形式的响应正文(如果适用)。
关键方法:
- open(method, url, async):初始化请求。
- send(data):将请求发送到服务器。
- setRequestHeader(header, value):设置自定义标头。
- abort():取消请求。
7.处理响应状态
您可以使用 onreadystatechange 事件来监控 XHR 请求的进度。
示例:
const xhr = new XMLHttpRequest();
8.使用 XHR 的优点
- 异步通信:避免阻塞主线程。
- 跨浏览器支持:适用于现代和旧版浏览器。
- 灵活的数据格式: 支持 JSON、XML、HTML 和纯文本。
9. XHR 的局限性
- 详细语法: 与 fetch 等现代 API 相比,需要更多代码。
- 回调地狱:复杂的请求可能会导致深度嵌套的回调。
- 有限的现代功能:缺乏 Promises 或 async/await 等功能。
10。现代替代方案:获取 API
虽然 XHR 仍然受到广泛支持,但 Fetch API 提供了一种现代的、基于承诺的方法来发出 HTTP 请求。
获取示例:
const xhr = new XMLHttpRequest();
11。结论
XMLHttpRequest 是一种可靠且得到良好支持的 AJAX 调用工具,但现代 API(如 fetch 或库(如 Axios))通常因其简单性和增强功能而受到青睐。然而,理解 XHR 对于维护遗留代码和更深入地了解异步通信在 JavaScript 中的工作原理至关重要。
嗨,我是 Abhay Singh Kathayat!
我是一名全栈开发人员,拥有前端和后端技术方面的专业知识。我使用各种编程语言和框架来构建高效、可扩展且用户友好的应用程序。
请随时通过我的商务电子邮件与我联系:kaashshorts28@gmail.com。
以上是掌握 XMLHttpRequest:JavaScript 中 AJAX 调用指南的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript核心数据类型在浏览器和Node.js中一致,但处理方式和额外类型有所不同。1)全局对象在浏览器中为window,在Node.js中为global。2)Node.js独有Buffer对象,用于处理二进制数据。3)性能和时间处理在两者间也有差异,需根据环境调整代码。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。