上一篇
场景引入:
凌晨3点,程序员小张盯着屏幕抓狂——他刚写完的网页明明静态数据都能显示,但一对接后端接口就"罢工",同事老王路过瞥了一眼:"你这AJAX请求姿势不对啊!" 今天我们就用最接地气的方式,掰开揉碎讲透AJAX请求的实战技巧。
简单说就是让网页偷偷跟服务器聊天的技术,不用刷新页面就能获取数据,
传统HTTP请求像打电话——必须等对方接听才能说话;AJAX则像发微信,发完消息该干嘛干嘛,收到回复再处理。
// 1. 创建通信员 const xhr = new XMLHttpRequest(); // 2. 设置监听器 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log('收到数据:', xhr.responseText); } }; // 3. 准备发送 xhr.open('GET', '/api/user?id=123', true); // true表示异步 // 4. 正式发送 xhr.send();
关键点解析:
readyState
:2(已发送)→3(接收中)→4(完成) status
:200成功,404找不到,500服务器错误 现代浏览器更推荐这种写法:
fetch('/api/data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({username: '张三'}) }) .then(response => { if (!response.ok) throw new Error('请求失败'); return response.json(); }) .then(data => console.log(data)) .catch(error => console.error('出错啦:', error));
优势:
遇到浏览器报错No 'Access-Control-Allow-Origin'
时:
add_header 'Access-Control-Allow-Origin' '你的域名'; add_header 'Access-Control-Allow-Methods' 'GET,POST';
// Fetch API + AbortController const controller = new AbortController(); setTimeout(() => controller.abort(), 5000); // 5秒超时 fetch('/api', { signal: controller.signal }) .catch(err => { if (err.name === 'AbortError') { console.log('请求超时'); } });
GET请求默认可能被缓存,解决方法:
fetch(`/api/data?t=${Date.now()}`) // 加时间戳
document.getElementById('loginBtn').addEventListener('click', async () => { const username = document.querySelector('#username').value; const password = document.querySelector('#password').value; try { const response = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) }); const result = await response.json(); if (result.success) { localStorage.setItem('token', result.token); showToast('登录成功!'); } else { showToast(result.message || '登录失败'); } } catch (err) { showToast('网络异常,请重试'); } });
功能亮点:
根据2025年Web开发趋势调研:
:
AJAX就像前端的隐形翅膀,掌握它能让你:
✅ 实现流畅的用户体验
✅ 灵活处理各种数据场景
✅ 跟上现代Web开发节奏
下次遇到数据交互问题,不妨先检查:
(完)
本文由 戢璟 于2025-07-29发表在【云服务器提供商】,文中图片由(戢璟)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/475646.html
发表评论