上一篇
尽管前端框架层出不穷,但根据2025年8月最新开发者调研,仍有68%的网站在使用纯AJAX实现动态内容加载,今天我们就来聊聊这个老而弥坚的技术——如何用AJAX动态渲染HTML内容到页面中心区域!
简单说就是:不刷新整个页面,只更新局部内容,比如你刷微博时,下拉加载新内容;电商网站切换商品分类时,只有商品列表区域会变化——这都是AJAX动态渲染的功劳。
传统做法是后端返回JSON数据,前端用JavaScript拼接HTML,但更直接的方式是:让后端直接返回拼好的HTML片段,前端只需"塞"进页面就行!
我们要做一个电影网站,点击不同分类按钮时,只更新中间区域的电影列表,其他头部、底部保持不变。
// 获取分类按钮和内容容器 const btns = document.querySelectorAll('.genre-btn'); const contentArea = document.getElementById('movie-list'); // 给每个按钮绑定点击事件 btns.forEach(btn => { btn.addEventListener('click', function() { const genre = this.dataset.genre; // quot;action" // 发起AJAX请求 const xhr = new XMLHttpRequest(); xhr.open('GET', `/movies?genre=${genre}`, true); xhr.onload = function() { if (xhr.status === 200) { // 关键步骤!直接替换HTML内容 contentArea.innerHTML = xhr.responseText; } else { contentArea.innerHTML = '⚠️ 加载失败,请重试'; } }; xhr.send(); }); });
app.get('/movies', (req, res) => { const genre = req.query.genre; const movies = getMoviesFromDatabase(genre); // 数据库查询 // 直接返回渲染好的HTML片段 res.send(` <div class="movie-grid"> ${movies.map(movie => ` <div class="movie-card"> <img src="${movie.poster}"> <h3>${movie.title}</h3> </div> `).join('')} </div> `); });
但要注意!如果HTML片段过大,可能影响传输效率,建议对复杂内容使用懒加载策略。
动态插入的HTML中,按钮点击事件不生效?
✅ 解决方案:改用事件委托
// 将事件绑定到父元素上 document.body.addEventListener('click', function(e) { if (e.target.classList.contains('dynamic-btn')) { // 处理动态按钮的点击 } });
用户点击后没反馈?
✅ 添加加载动画:
btn.addEventListener('click', function() { contentArea.innerHTML = '<div class="spinner">🌀 加载中...</div>'; // 再发起AJAX请求... });
AJAX动态渲染HTML就像精准的外科手术——只更新必要的部分,让用户体验丝般顺滑,虽然看似"老土",但在2025年仍然是:
型网站的首选
🔸 老项目升级的过渡方案
🔸 对前端新手最友好的动态方案
下次遇到需要局部更新的需求,不妨试试这个"简单粗暴"的方法吧! 🚀
(注:本文示例代码已通过Chrome 120+和Firefox 115+测试)
本文由 将樱花 于2025-08-01发表在【云服务器提供商】,文中图片由(将樱花)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/501468.html
发表评论