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

@(AJAX)

1. 什么是 AJAX?

AJAX(Asynchronous JavaScript and XML)是一种无需刷新页面即可与服务器交换数据的技术,核心特点:

  • 异步通信:不阻塞页面交互
  • 局部更新:只刷新部分页面内容
  • 数据格式:现代多用 JSON(早期用 XML)

典型应用场景

  • 实时搜索(如百度输入时的联想词)
  • 无限滚动(如微博动态加载)
  • 表单提交(如注册时用户名查重)

2. AJAX 工作原理
用户浏览器服务器触发事件(如点击按钮)发送异步请求(XMLHttpRequest)返回数据(JSON/XML)更新页面局部内容用户浏览器服务器

3. 原生 JavaScript 实现 AJAX
(1) 创建 XMLHttpRequest 对象
let xhr = new XMLHttpRequest();
(2) 配置请求
xhr.open('GET', 'https://api.example.com/data', true); // true 表示异步
(3) 设置回调函数
xhr.onload = function() {if (xhr.status >= 200 && xhr.status < 300) {console.log(JSON.parse(xhr.responseText));} else {console.error('请求失败:', xhr.statusText);}
};xhr.onerror = function() {console.error('网络错误');
};
(4) 发送请求
xhr.send();
(5) POST 请求示例(带数据)
xhr.open('POST', 'https://api.example.com/users', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({ name: "Alice", age: 25 }));

4. Fetch API(现代替代方案)

更简洁的 Promise-based API:

// GET 请求
fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));// POST 请求
fetch('https://api.example.com/users', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ name: "Bob" })
});

5. jQuery 实现 AJAX(简化版)
$.ajax({url: 'https://api.example.com/data',type: 'GET',success: function(data) {console.log(data);},error: function(error) {console.error(error);}
});// 更简洁的写法
$.get('https://api.example.com/data', function(data) {console.log(data);
});

6. 实际应用案例
(1) 实时搜索
document.getElementById('search').addEventListener('input', function(e) {fetch(`/search?q=${e.target.value}`).then(res => res.json()).then(results => {document.getElementById('results').innerHTML = results.map(item => `<li>${item}</li>`).join('');});
});
(2) 表单异步提交
document.forms['register'].addEventListener('submit', function(e) {e.preventDefault();fetch('/register', {method: 'POST',body: new FormData(this)}).then(response => {if (response.ok) alert('注册成功!');});
});

7. 关键注意事项
  1. 跨域问题
    • 解决方案:CORS(需服务器设置Access-Control-Allow-Origin
    Access-Control-Allow-Origin: *
    
  2. 错误处理
    • 始终检查 response.okxhr.status
  3. 性能优化
    • 使用防抖(debounce)技术避免频繁请求
    let timer;
    input.addEventListener('input', () => {clearTimeout(timer);timer = setTimeout(() => { /* AJAX请求 */ }, 300);
    });
    

8. AJAX 调试技巧
  • 浏览器开发者工具
    • Network 面板查看请求/响应
    • 过滤 XHR 请求类型
  • 在线测试工具
    • Postman
    • httpbin.org(免费测试接口)

9. 现代替代方案
  • Axios(推荐库):
    axios.get('https://api.example.com/data').then(response => console.log(response.data));
    
  • WebSocket:适合实时双向通信(如聊天室)

http://www.dtcms.com/a/327902.html

相关文章:

  • JS 模块化与打包工具
  • 基于Hadoop的农产品价格数据分析与可视化【Springboot】
  • 【已解决】win10为什么git无法弹出用户登录框呢?
  • 家政小程序系统开发:推动家政行业数字化转型,共创美好未来
  • unity shader ——屏幕故障
  • hashmap如何解决碰撞
  • Pytorch编译
  • 1.Ansible 自动化介绍
  • 网站测评-利用缓存机制实现XSS的分步测试方法
  • 设置默认的pip下载清华源(国内镜像源)和pip使用清华源
  • SQL tutorials
  • 鸿蒙下载图片保存到相册,截取某个组件保存到相册
  • 农业园区气象站在高标准农田的用处
  • 行业热点丨智能仿真时代:电子工程多物理场解决方案创新实践
  • USLR:一款用于脑MRI无偏倚平滑纵向配准的开源工具|文献速递-医学影像算法文献分享
  • 体育数据api接口,足球api篮球api电竞api,比赛赛事数据api
  • vmware虚拟机Ubuntu系统奔溃修复
  • 西安国际数字科创产业园:政策赋能筑长安数字产业集群
  • Linux学习-软件编程(标准IO)
  • 【ROS2】ROS2 基础学习教程 以lerobot-so100为例
  • specCPU2017在麒麟系统的简单测试
  • VisionPro——1.VP与C#联合
  • 前端/在vscode中创建Vue3项目
  • 【实时Linux实战系列】实时环境监测系统架构设计
  • 多奥电梯智能化解决方案的深度解读与结构化总结,内容涵盖系统架构、功能模块、应用场景与社会价值四大维度,力求全面展示该方案的技术先进性与应用前景。
  • HTTPS服务
  • 重构与性能的平衡术:先优化结构,再优化速度
  • 机器学习—— TF-IDF文本特征提取评估权重 + Jieba 库进行分词(以《红楼梦》为例)
  • A1-MPLS-LDP配置
  • 【MongoDB】简单理解聚合操作,案例解析