上一篇
想象一下,你正在浏览一个电商网站,点击"加入购物车"按钮时,页面突然白屏刷新——这种体验是不是很糟糕?好在现代前端开发早已告别这种"石器时代"的做法。
2005年,Google在Gmail中大规模应用的Ajax技术彻底改变了这一局面,即使到了2025年,虽然我们有fetch API、Axios等更现代的方案,但理解纯JavaScript实现Ajax的原理仍然是前端工程师的必修课,我们就来拆解这个经典技术。
Ajax全称Asynchronous JavaScript and XML(异步JavaScript和XML),但实际现在更多用JSON格式,它的核心特点是:
虽然名字里有"XML",但这个对象其实可以处理任何数据格式,创建一个基础请求只需要四步:
// 1. 创建XHR对象 const xhr = new XMLHttpRequest(); // 2. 配置请求 xhr.open('GET', '/api/data', true); // 第三个参数true表示异步 // 3. 设置回调 xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { console.log('成功获取数据:', xhr.responseText); } else { console.error('请求失败:', xhr.statusText); } }; // 4. 发送请求 xhr.send();
当执行这段代码时,浏览器背后发生了这些事情:
让我们看一个更完整的例子,包含POST请求、错误处理和超时设置:
function sendAjaxPost(url, data, callback) { const xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/json'); // 设置超时(单位:毫秒) xhr.timeout = 5000; xhr.onload = function() { if (xhr.status === 200) { callback(null, JSON.parse(xhr.responseText)); } else { callback(new Error(`请求失败: ${xhr.status}`), null); } }; xhr.onerror = function() { callback(new Error('网络错误'), null); }; xhr.ontimeout = function() { callback(new Error('请求超时'), null); }; xhr.send(JSON.stringify(data)); } // 使用示例 sendAjaxPost('/api/user', {name: '张三'}, (err, result) => { if (err) { console.error('出错了:', err.message); return; } console.log('创建用户成功:', result); });
虽然现代开发更推荐使用fetch API(基于Promise)或第三方库,但了解XHR仍有价值:
有趣的是,根据2025年8月的开发者调研,仍有23%的遗留项目直接使用XHR,主要分布在金融和政府领域的老系统中。
从2005年到2025年,Ajax技术已经陪伴我们走过了20年,虽然新技术层出不穷,但理解这些基础原理,就像建筑师了解砖块的承重特性一样,能让你在复杂的项目中有更强的掌控力,下次当你使用axios.get()时,不妨想想背后那个默默工作的XMLHttpRequest对象——它可是改变Web发展历程的真正英雄。
本文由 富永康 于2025-08-01发表在【云服务器提供商】,文中图片由(富永康)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/505130.html
发表评论