简单实现Ajax基础应用

Ajax不是一种技术,而是一个编程概念。HTML 和 CSS 可以组合使用来标记和设置信息样式。JavaScript 可以修改网页以动态显示,并允许用户与新信息进行交互。内置的 XMLHttpRequest 对象用于在网页上执行 Ajax,允许网站将内容加载到屏幕上而无需刷新页面。Ajax不是一种新技术,也不是一种新语言。相反,它是以新方式使用的现有技术。

在创造“Ajax”一词的文章中, 杰西·詹姆斯·加勒特解释说,以下技术被整合在一起:

  • 用于演示的HTML(或 XHTML)和 CSS
  • 文档对象模型(DOM),用于动态显示数据并与之交互
  • 用于数据交换的 JSON 或 XML,以及用于 XML 操作的 XSLT
  • 用于异步通信的XMLHttpRequest对象
  • 将这些技术结合在一起的JavaScript

下面为你介绍 AJAX 的基础应用,我会通过原生 JavaScript 和 Fetch API 两种方式来实现一个简单的示例。

1. 原生 XMLHttpRequest 方式

步骤解析

  1. 创建 XMLHttpRequest 对象。
  2. 打开与服务器的连接。
  3. 监听请求状态的变化。
  4. 发送请求。
  5. 处理响应数据。

示例代码

// 创建XMLHttpRequest对象
const xhr = new XMLHttpRequest();// 配置请求(以GET请求为例)
xhr.open('GET', 'https://api.example.com/data', true);// 监听状态变化
xhr.onreadystatechange = function() {if (xhr.readyState === 4) { // 请求已完成if (xhr.status === 200) { // 请求成功console.log('响应数据:', xhr.responseText);} else {console.error('请求失败,状态码:', xhr.status);}}
};// 发送请求
xhr.send();

2. Fetch API 方式(现代方法)

步骤解析

  1. 使用 fetch () 函数发起请求。
  2. 处理 Promise 对象。
  3. 将响应数据解析为 JSON 格式。
  4. 处理解析后的数据。

示例代码

// 发起GET请求
fetch('https://api.example.com/data').then(response => {if (!response.ok) {throw new Error('HTTP错误,状态码:' + response.status);}return response.json(); // 解析JSON数据}).then(data => {console.log('响应数据:', data);}).catch(error => {console.error('请求出错:', error);});

3. 实际应用示例

下面是一个结合 HTML 和 Fetch API 的完整示例,它能够从 GitHub API 获取用户信息并展示出来:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>AJAX示例</title>
</head>
<body><button id="fetchData">获取GitHub用户信息</button><div id="result"></div><script>document.getElementById('fetchData').addEventListener('click', function() {// 使用Fetch API发送请求fetch('https://api.github.com/users/octocat').then(response => response.json()).then(data => {// 处理返回的数据const resultDiv = document.getElementById('result');resultDiv.innerHTML = `<h3>${data.login}</h3><img src="${data.avatar_url}" alt="Avatar" width="100"><p>关注者: ${data.followers}</p><p>仓库数量: ${data.public_repos}</p>`;}).catch(error => {console.error('请求出错:', error);document.getElementById('result').innerHTML = '获取数据失败';});});</script>
</body>
</html>

4. 关键要点提醒

  • 跨域请求:由于浏览器的同源策略限制,AJAX 通常只能向同源的服务器发送请求。不过,可以通过 CORS(跨域资源共享)或者 JSONP 来解决跨域问题。
  • 错误处理:在实际应用中,必须对网络错误、超时等异常情况进行处理。
  • 请求方法:支持 GET、POST、PUT、DELETE 等多种 HTTP 请求方法。
  • 数据格式:常见的数据格式有 JSON、XML、纯文本等。

通过上述示例,你可以实现简单的 AJAX 请求。在实际的项目开发中,建议使用 axios 等第三方库,它能提供更强大的功能和更友好的 API。

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

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

相关文章

详解开漏输出和推挽输出

开漏输出和推挽输出 以上是 GPIO 配置为输出时的内部示意图&#xff0c;我们要关注的其实就是这两个 MOS 管的开关状态&#xff0c;可以组合出四种状态&#xff1a; 两个 MOS 管都关闭时&#xff0c;输出处于一个浮空状态&#xff0c;此时他对其他点的电阻是无穷大的&#xff…

Matlab实现LSTM-SVM回归预测,作者:机器学习之心

Matlab实现LSTM-SVM回归预测&#xff0c;作者&#xff1a;机器学习之心 目录 Matlab实现LSTM-SVM回归预测&#xff0c;作者&#xff1a;机器学习之心效果一览基本介绍程序设计参考资料 效果一览 基本介绍 代码主要功能 该代码实现了一个LSTM-SVM回归预测模型&#xff0c;核心流…

Leetcode - 周赛 452

目录 一&#xff0c;3566. 等积子集的划分方案二&#xff0c;3567. 子矩阵的最小绝对差三&#xff0c;3568. 清理教室的最少移动四&#xff0c;3569. 分割数组后不同质数的最大数目 一&#xff0c;3566. 等积子集的划分方案 题目列表 本题有两种做法&#xff0c;dfs 选或不选…

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(5)

1.问题描述&#xff1a; 集成华为一键登录的LoginWithHuaweiIDButton&#xff0c; 但是Button默认名字叫 “华为账号一键登录”&#xff0c;太长无法显示&#xff0c;能否简写成“一键登录”与其他端一致&#xff1f; 解决方案&#xff1a; 问题分两个场景&#xff1a; 一、…

Asp.Net Core SignalR的分布式部署

文章目录 前言一、核心二、解决方案架构三、实现方案1.使用 Azure SignalR Service2.Redis Backplane(Redis 背板方案&#xff09;3.负载均衡配置粘性会话要求无粘性会话方案&#xff08;仅WebSockets&#xff09;完整部署示例&#xff08;Redis Docker&#xff09;性能优化技…

L2-054 三点共线 - java

L2-054 三点共线 语言时间限制内存限制代码长度限制栈限制Java (javac)2600 ms512 MB16KB8192 KBPython (python3)2000 ms256 MB16KB8192 KB其他编译器2000 ms64 MB16KB8192 KB 题目描述&#xff1a; 给定平面上 n n n 个点的坐标 ( x _ i , y _ i ) ( i 1 , ⋯ , n ) (x\_i…

【 java 基础知识 第一篇 】

目录 1.概念 1.1.java的特定有哪些&#xff1f; 1.2.java有哪些优势哪些劣势&#xff1f; 1.3.java为什么可以跨平台&#xff1f; 1.4JVM,JDK,JRE它们有什么区别&#xff1f; 1.5.编译型语言与解释型语言的区别&#xff1f; 2.数据类型 2.1.long与int类型可以互转吗&…

高效背诵英语四级范文

以下是结合认知科学和实战验证的 ​​高效背诵英语作文五步法​​&#xff0c;助你在30分钟内牢固记忆一篇作文&#xff0c;特别适配考前冲刺场景&#xff1a; &#x1f4dd; ​​一、解构作文&#xff08;5分钟&#xff09;​​ ​​拆解逻辑框架​​ 用荧光笔标出&#xff…

RHEL7安装教程

RHEL7安装教程 下载RHEL7镜像 通过网盘分享的文件&#xff1a;RHEL 7.zip 链接: https://pan.baidu.com/s/1ExLhdJigj-tcrHJxIca5XA?pwdjrrj 提取码: jrrj --来自百度网盘超级会员v6的分享安装 1.打开VMware&#xff0c;新建虚拟机&#xff0c;选择自定义然后下一步 2.点击…

结构型设计模式之Decorator(装饰器)

结构型设计模式之Decorator&#xff08;装饰器&#xff09; 前言&#xff1a; 本案例通过李四举例&#xff0c;不改变源代码的情况下 对“才艺”进行增强。 摘要&#xff1a; 摘要&#xff1a; 装饰器模式是一种结构型设计模式&#xff0c;允许动态地为对象添加功能而不改变其…

Kotlin委托机制使用方式和原理

目录 类委托属性委托简单的实现属性委托Kotlin标准库中提供的几个委托延迟属性LazyLazy委托参数可观察属性Observable委托vetoable委托属性储存在Map中 实践方式双击back退出Fragment/Activity传参ViewBinding和委托 类委托 类委托有点类似于Java中的代理模式 interface Base…

SpringBoot接入Kimi实践记录轻松上手

kimi简单使用 什么是Kimi API 官网&#xff1a;https://platform.moonshot.cn/ Kimi API 并不是一个我所熟知的广泛通用的术语。我的推测是&#xff0c;你可能想问的是关于 API 的一些基础知识。API&#xff08;Application Programming Interface&#xff0c;应用程序编程接…

书籍在其他数都出现k次的数组中找到只出现一次的数(7)0603

题目 给定一个整型数组arr和一个大于1的整数k。已知arr中只有1个数出现了1次&#xff0c;其他的数都出现了k次&#xff0c;请返回只出现了1次的数。 解答&#xff1a; 对此题进行思路转换&#xff0c;可以将此题&#xff0c;转换成k进制数。 k进制的两个数c和d&#xff0c;…

React 项目初始化与搭建指南

React 项目初始化有多种方式&#xff0c;可以选择已有的脚手架工具快速创建项目&#xff0c;也可以自定义项目结构并使用构建工具实现项目的构建打包流程。 1. 脚手架方案 1.1. Vite 通过 Vite 创建 React 项目非常简单&#xff0c;只需一行命令即可完成。Vite 的工程初始化…

大模型模型推理的成本过高,如何进行量化或蒸馏优化

在人工智能的浪潮中,大模型已经成为推动技术革新的核心引擎。从自然语言处理到图像生成,再到复杂的多模态任务,像GPT、BERT、T5这样的庞大模型展现出了惊人的能力。它们在翻译、对话系统、内容生成等领域大放异彩,甚至在医疗、金融等行业中也开始扮演重要角色。可以说,这些…

机器学习在多介质环境中多污染物空间预测的应用研究

机器学习在多介质环境中多污染物空间预测的应用研究 1. 引言 1.1 研究背景与意义 随着工业化和城市化进程加速,环境中多种污染物的共存已成为全球性环境问题。重金属(如铅、汞、镉)、有机污染物(如多环芳烃、农药残留)和新兴污染物(如微塑料、药品残留)在空气、水体、…

图解深度学习 - 激活函数和损失函数

激活函数和损失函数在深度学习中扮演着至关重要的角色。通过选择合适的激活函数和损失函数&#xff0c;可以显著提高神经网络的表达能力和优化效果。 其中激活函数是神经网络中的非线性函数&#xff0c;用于在神经元之间引入非线性关系&#xff0c;从而使模型能够学习和表示复…

影响服务器稳定性的因素都有什么?

服务器的稳定性会影响到业务是否能够持续运行&#xff0c;用户在进行访问网站的过程中是否出现页面卡顿的情况&#xff0c;本文就来了解一下都是哪些因素影响着服务器的稳定性。 服务器中的硬件设备是保证服务器稳定运行的基础&#xff0c;企业选择高性能的处理器和大容量且高速…

TopCode之最大子数组和

题目链接 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 解法1: 暴力(一个循环用来固定,一个用来找最大的子数组O(n^2),每次往后拓展一个元素就判断是否是最长的),枚举出每一种情况, 然后不断更新最大的 解法二: dp 1> dp的含义: dp[i]记…

深入解析 Flask 命令行工具与 flask run命令的使用

Flask 是一个轻量级的 Python Web 应用框架&#xff0c;其内置的命令行工具&#xff08;CLI&#xff09;基于 Click 库&#xff0c;提供了方便的命令行接口&#xff0c;用于管理和运行 Flask 应用程序。本文将详细介绍 Flask 命令行工具的功能&#xff0c;以及如何使用 flask r…