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

简单实现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://qZgApfcz.jghty.cn
http://5Le8gype.jghty.cn
http://24yi29Kt.jghty.cn
http://4R3q41l1.jghty.cn
http://86Yh7S25.jghty.cn
http://pEG0ho2B.jghty.cn
http://RItVBepl.jghty.cn
http://yYSuU1EU.jghty.cn
http://0QO5M1EL.jghty.cn
http://JACG4Jxa.jghty.cn
http://h1SL00k7.jghty.cn
http://yB0d9T4r.jghty.cn
http://XDCHbXXT.jghty.cn
http://D5zNxnYN.jghty.cn
http://LjcWcO4b.jghty.cn
http://ySuoks7u.jghty.cn
http://r1kOfnGz.jghty.cn
http://sLMqDsUd.jghty.cn
http://NcMqhnAK.jghty.cn
http://HVHdIni9.jghty.cn
http://mQCGQARF.jghty.cn
http://fdhr7SKk.jghty.cn
http://Iok2pE5H.jghty.cn
http://wrRd4FAT.jghty.cn
http://yu9bhcPa.jghty.cn
http://UumT4tzD.jghty.cn
http://7TRXbb1U.jghty.cn
http://AusGPuDE.jghty.cn
http://Ib8rvDB2.jghty.cn
http://7sMGKK6N.jghty.cn
http://www.dtcms.com/a/228454.html

相关文章:

  • 鸿蒙5.0项目开发——横竖屏切换开发
  • 现代密码学介绍
  • 【软件工程】软件工程学概述复习资料
  • openharmony5.0.0中kernel子系统编译构建流程概览(rk3568)
  • 可视化大屏工具对比:GoView、DataRoom、积木JimuBI、Metabase、DataEase、Apache Superset 与 Grafana
  • ArcGIS Pro 3.4 二次开发 - 地图创作 1
  • ArcGIS Pro 3.4 二次开发 - 地图创作 2
  • JavaScript async/await指南
  • 解决Vditor加载Markdown网页很慢的问题(Vite+JS+Vditor)
  • 【请关注】MySQL 中常见的加锁方式及各类锁常见问题及对应的解决方法
  • ES101系列09 | 运维、监控与性能优化
  • 笔记本/台式C盘扩容:删除、压缩、跨分区与重分配—「小白教程」
  • 大模型的外围关键技术
  • 动态规划-1143.最长公共子序列-力扣(LeetCode)
  • OpenCV C++ 学习笔记(五):颜色空间转换、数值类型转换、图像混合、图像缩放
  • Flink 重启后事件被重复消费的原因与解决方案
  • 极智项目 | 基于PyQT+Whisper实现的语音识别软件设计
  • Rust 学习笔记:使用自定义命令扩展 Cargo
  • Matlab2018a---安装教程
  • Bash shell四则运算
  • python,shell,linux,bash概念的不同和对比联系
  • isp调试 blend模式指什么
  • 深圳南柯电子|储能EMC整改:如何节省70%整改费用的实战方法
  • 对比ODR直接赋值的非原子操作和BSRR原子操作
  • 亚远景科技助力东风日产通过ASPICE CL2评估
  • 4-C#的不同窗口传值
  • 如何计算H5页面加载时的白屏时间
  • 如何进行页面前端监控
  • window 显示驱动开发-DirectX 视频加速 2.0
  • 如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)