如何遍历JSON.parse解析后的JSON对象?遇jsblog.fields未定义问题求助
问题解决:jsblog.fields is undefined
核心错误分析
- 重复解析JSON:
fetch的response.json()方法已经自动将响应体解析为JavaScript对象/数组,无需再调用JSON.parse(json_blogs)。重复解析会破坏原本的数据结构,导致后续访问出错。 - 遍历逻辑错误:Django返回的是博客对象的数组,
fields属性属于数组中的每个博客对象,而非数组本身。直接访问数组的fields属性自然会得到undefined。
修正后的代码
function load_blog(){ let start_blog = 0 let end_blog = 4 fetch(`/blog/?start=${start_blog}&end_blog=${end_blog}`) .then(response => response.json()) .then(blogs => { // 遍历返回的博客数组 blogs.forEach(blog => { // 访问单个博客对象的fields属性并调用createDiv createDiv(blog.fields); }); }) .catch(error => { // 新增错误捕获,方便排查请求或解析问题 console.error('加载博客数据失败:', error); }); }
额外说明
- 如果Django返回的是单个博客对象而非数组,直接访问
blogs.fields即可,但结合分页参数start和end_blog,返回数组的逻辑更合理。 - 加入
catch块可以快速定位请求失败、响应格式异常等问题,提升调试效率。
内容的提问来源于stack exchange,提问作者Matthew Manning
相关产品推荐
相关产品推荐

