页面展示JSON数据仅显示最后一个ID,console.log可正常遍历的技术求助
解决循环渲染JSON数据仅显示最后一个ID的问题
我猜你在success回调的循环里,应该是直接用了类似$("#your-element").html(res[i].id)的写法——每次循环都会把目标元素的内容替换成当前迭代的ID,而不是把新内容追加进去,这就导致最后只有最后一个ID留在页面上;而console.log因为每次都会输出当前值,所以能完整展示所有ID。
下面给你两种常用的解决思路:
方法1:先拼接所有HTML再一次性插入
这种方式性能更优,能减少DOM操作的次数:
success: function(res){ // 初始化空字符串用来拼接所有内容 let adHtml = ''; for (var i = 0; i < res.length; i++){ // 根据需求拼接HTML片段,这里以展示ID为例 adHtml += `<div class="ad-item">广告ID:${res[i].id}</div>`; } // 把拼接好的内容插入到目标元素(替换原有内容) $("#your-target-element").html(adHtml); // 如果需要追加到已有内容后面,改用append: // $("#your-target-element").append(adHtml); }
方法2:循环中逐个追加内容
如果数据量很小,或者需要实时看到元素被添加的过程,可以每次循环都用append:
success: function(res){ // 先清空目标元素(如果需要清除原有内容的话) $("#your-target-element").empty(); for (var i = 0; i < res.length; i++){ // 每次循环都把新的HTML片段追加到目标元素里 $("#your-target-element").append(`<div class="ad-item">广告ID:${res[i].id}</div>`); } }
额外提醒
- 确保你访问的
res[i].id是正确的属性名,要和后端返回的JSON结构对应(比如后端返回的是{"id": 123}还是{"ad_id": 123}) - 确认目标元素
#your-target-element在页面中存在,没有拼写错误
内容的提问来源于stack exchange,提问作者chris keenan
相关产品推荐
相关产品推荐

