上一篇
// 步骤1:创建异步对象 const xhr = new XMLHttpRequest(); // 步骤2:设置请求参数(GET请求) xhr.open('GET', 'https://api.example.com/data?id=123', true); // 步骤3:发送请求 xhr.send(); // 步骤4:监听状态变化 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { const data = JSON.parse(xhr.responseText); console.log('🎉 数据获取成功:', data); } };
const xhr = new XMLHttpRequest(); xhr.open('POST', 'https://api.example.com/submit', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('name=John&age=30'); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status === 200) { console.log('✅ POST请求成功:', xhr.responseText); } else { console.error('❌ 请求失败:', xhr.statusText); } } };
fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log('🚀 Fetch数据:', data)) .catch(error => console.error('💥 错误:', error));
fetch('https://api.example.com/submit', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Hello', body: 'Fetch API' }) }) .then(response => response.json()) .then(data => console.log('📤 POST成功:', data)) .catch(error => console.error('💥 错误:', error));
fetch('https://api.example.com/data') .then(response => { if (!response.ok) throw new Error('🚨 HTTP错误: ' + response.status); return response.json(); }) .then(data => console.log('✅ 成功:', data)) .catch(error => console.error('💥 捕获错误:', error.message));
npm install axios # 或 yarn add axios
// GET请求 axios.get('https://api.example.com/data') .then(response => console.log('📡 Axios GET:', response.data)) .catch(error => console.error('💥 错误:', error)); // POST请求 axios.post('https://api.example.com/submit', { name: 'Alice' }) .then(response => console.log('📤 POST成功:', response.data)) .catch(error => console.error('💥 错误:', error));
// 请求拦截器(添加Token) axios.interceptors.request.use(config => { const token = localStorage.getItem('auth_token'); if (token) config.headers.Authorization = `Bearer ${token}`; return config; }); // 响应拦截器(统一处理错误) axios.interceptors.response.use( response => response.data, error => { if (error.response?.status === 401) { console.error('🔒 未授权,跳转登录'); window.location.href = '/login'; } return Promise.reject(error); } );
$.ajax({ url: 'https://api.example.com/data', type: 'GET', dataType: 'json', success: function(data) { console.log('🎯 JQuery成功:', data); }, error: function(xhr, status, error) { console.error('💥 错误类型:', status, '详情:', error); } });
axios.get('https://api.example.com/data', { timeout: 5000 }) .catch(error => { if (error.code === 'ECONNABORTED') { console.error('⏰ 请求超时!'); } });
interface User { id: number; name: string; } axios.get<User[]>('https://api.example.com/users') .then(response => console.log(response.data));
Single SPA
或qiankun
管理前端微服务。import()
动态加载组件。Cache API
缓存高频请求数据。方法 | 适用场景 | 特点 | 推荐指数 |
---|---|---|---|
原生Ajax | 传统项目/简单需求 | 兼容性好,代码稍繁琐 | |
Fetch API | 现代浏览器/跨域请求 | 基于Promise,简洁优雅 | |
Axios | Vue/React项目/复杂需求 | 拦截器、TypeScript支持 | |
JQuery Ajax | 遗留项目维护 | 兼容旧版浏览器 |
💡 提示:2025年前端趋势聚焦性能与体验,建议结合WebAssembly处理计算密集型任务,并使用Service Workers实现离线缓存!
本文由 业务大全 于2025-08-27发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/754229.html
发表评论