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

Ajax原理、用法与经典代码实例

一、什么是 Ajax

Ajax(Asynchronous JavaScript and XML,异步的 JavaScript 和 XML)是一种在无需重新加载整个网页的情况下,与服务器交换数据并更新部分网页内容的技术。

简单来说,Ajax 让网页能够实现“局部刷新”、“无刷新动态加载”,比如:

  • 点击加载更多内容

  • 搜索框的自动补全

  • 提交表单不用整个页面跳转

Ajax 不是一种单独的技术,而是一组技术的组合,核心是 JavaScript 的异步请求能力。


二、Ajax 的原理

  1. 用户在页面上触发事件(如点击按钮、输入内容)

  2. JavaScript 通过浏览器内置的 XMLHttpRequest 对象(或现代 fetch API)向服务器发送 HTTP 请求

  3. 服务器处理请求后,返回数据(常见格式为 JSON、XML、HTML、文本)

  4. JavaScript 收到响应后,动态更新页面内容,而不用整个页面刷新


三、Ajax 的典型应用场景

  • 搜索引擎的下拉联想

  • 发送验证码(异步倒计时)

  • 聊天消息的实时获取

  • 电商商品筛选和分页

  • 表单的无刷新提交和校验


四、Ajax 的经典写法

1. 原生 XMLHttpRequest(经典写法)

// 创建一个 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();// 配置请求方式、URL、是否异步
xhr.open("GET", "https://api.example.com/data", true);// 监听请求状态变化
xhr.onreadystatechange = function () {if (xhr.readyState === 4) { // 请求完成if (xhr.status === 200) { // 状态码200=成功// 处理响应内容var data = JSON.parse(xhr.responseText);document.getElementById("result").innerText = data.message;} else {console.error("请求失败", xhr.status);}}
};// 发送请求
xhr.send();

2. jQuery Ajax(广泛用于早期项目)

$.ajax({url: "https://api.example.com/data",type: "GET",dataType: "json",success: function(data) {$("#result").text(data.message);},error: function(xhr, status, error) {alert("请求失败: " + error);}
});

五、现代 Ajax 写法(Promise 风格)

1. fetch API(原生 Promise)

fetch("https://api.example.com/data").then(response => {if (!response.ok) throw new Error("网络错误");return response.json();}).then(data => {document.getElementById("result").innerText = data.message;}).catch(error => {console.error("请求失败:", error);});

2. axios(社区主流库,Promise/async风格)

// 需提前用 npm/yarn 安装 axios
import axios from "axios";axios.get("https://api.example.com/data").then(response => {document.getElementById("result").innerText = response.data.message;}).catch(error => {console.error("请求失败:", error);});

3. async/await(Promise的语法糖)

async function loadData() {try {const response = await fetch("https://api.example.com/data");if (!response.ok) throw new Error("网络错误");const data = await response.json();document.getElementById("result").innerText = data.message;} catch (error) {console.error("请求失败:", error);}
}loadData();

六、Ajax 返回的数据格式

  • JSON(最常用){"msg": "success"}

  • XML:早期流行,现在已较少用

  • HTML:直接插入到 DOM

  • 纯文本:如普通字符串


七、Ajax 的优点与注意点

优点:

  • 提升用户体验(局部刷新、无需等待页面重载)

  • 减少服务器压力与网络流量

  • 支持实时应用(聊天、股票、物流等)

注意点:

  • 跨域请求限制(可用CORS、JSONP等方式解决)

  • 异步处理(要理解回调、Promise)

  • 前后端接口需约定好数据格式


八、总结

Ajax 是前端和服务器之间“无刷新”通信的基础。经典用 XMLHttpRequest,现在更推荐 fetch/axios 等 Promise 风格。


九、演示小结

  • 经典写法(XMLHttpRequest):入门理解 Ajax 原理

  • 现代写法(fetch/axios):实际开发必用,更优雅、易扩展


文章转载自:
http://carnassial.apjjykv.cn
http://anatomically.apjjykv.cn
http://carbonation.apjjykv.cn
http://breather.apjjykv.cn
http://choric.apjjykv.cn
http://bearcat.apjjykv.cn
http://bangui.apjjykv.cn
http://boubou.apjjykv.cn
http://acquaintanceship.apjjykv.cn
http://beachy.apjjykv.cn
http://chlorotic.apjjykv.cn
http://become.apjjykv.cn
http://baywreath.apjjykv.cn
http://bosh.apjjykv.cn
http://acquaalta.apjjykv.cn
http://bhil.apjjykv.cn
http://christlike.apjjykv.cn
http://anesthesia.apjjykv.cn
http://chinchy.apjjykv.cn
http://aphelion.apjjykv.cn
http://balas.apjjykv.cn
http://annual.apjjykv.cn
http://antisubmarine.apjjykv.cn
http://biscayne.apjjykv.cn
http://bonami.apjjykv.cn
http://chlorate.apjjykv.cn
http://catbrier.apjjykv.cn
http://cellist.apjjykv.cn
http://cantabrize.apjjykv.cn
http://cabob.apjjykv.cn
http://www.dtcms.com/a/281191.html

相关文章:

  • TCP协议可靠性设计的核心机制与底层逻辑
  • 基于YOLOv8的水稻叶片病害检测系统的设计与实现【近6W条数据集+多病害特征+高准确率】
  • 修改系统配置后,如何编写 Python 脚本以适应 SSL 证书验证的变化
  • Axios 和 Promise 区别对比
  • C语言---自定义类型(下)(枚举和联合类型)
  • 利用DeepSeek为chdb命令行客户端添加输出重定向和执行SQL脚本功能
  • nlp论文:分本分类:《Bag of Tricks for Efficient Text Classification》
  • VirtualBox网络配置全指南:桥接、Host-Only与双网卡实战
  • 2025华为ODB卷-士兵过河-三语言题解
  • 限制apk使用时长第二篇-限制/拦截Apk启动-应用锁功能
  • 创客匠人:创始人 IP 变现,从 “单点尝试” 到 “生态赋能” 的跨越
  • S7-200 SMART PLC:不同CPU及数字量 IO 接线全解析
  • ESLint 配置错误:ReferenceError: prettier is not defined 解决方案
  • 运维技术教程之Jenkins上的known_hosts文件
  • 高频高密度趋势下磁芯材料评价指标探讨
  • UVM(1)—配置环境
  • 算法学习day16----Python数据结构--模拟队列
  • 传统三层网络架构和现代数据中心网络架构(如思科 ACI 的 Spine-Leaf 架构)的对比和分析(Grok3 回答)
  • Mac电脑上无需卸载即可切换使用多个EasyConnect客户端的解决方案
  • Docker安装升级redis,并设置持久化
  • 使用 sudo iftop -i 分析服务器带宽使用情况
  • 一文读懂语义解析技术:从规则到神经网络的演进与挑战
  • PPP 链路及 MP 捆绑与 CHAP 验证实验
  • 从零开始学前端html篇3
  • Missing classes detected while running R8解决
  • 创客匠人:从 IP 到变现,定位是构建价值闭环的核心
  • Elasticsearch的深度翻页问题
  • Git本地操作完全指南:从入门到精通
  • 创客匠人:创始人 IP 打造,知识变现的时代必然
  • Elasticsearch 9.x 搜索执行流程(源码解读)