You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript循环调用Blogger API获取全部博文?代码报错求助

解决Blogger API调用中"$ is not defined"的错误

你碰到的Uncaught ReferenceError: $ is not defined问题,核心原因是jQuery还没加载完成,你的代码就先执行了,或者jQuery加载失败导致$这个全局变量不存在。另外你的代码还有个小bug,我一起帮你修正。

问题分析

  1. 虽然你引入了jQuery的CDN,但浏览器加载脚本是异步的,可能你的handleResponse函数执行时,jQuery还没加载完毕,所以找不到$。
  2. 循环里的$('.post p').html(response.items[i].title)会把所有.post下的<p>标签内容都改成当前循环的标题,这不是你想要的效果——应该只给刚新增的那篇文章设置标题。

修正后的代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
// 确保jQuery和DOM都加载完成后再执行代码
$(document).ready(function() {
  function handleResponse(response) {
    var post_number = Object.keys(response.items).length;
    for (var i = 0; i < post_number; i++) {
      // 创建当前文章的元素,直接设置标题后再追加
      var $post = $('<div id="post' + (i+1) + '" class="post"><p>' + response.items[i].title + '</p></div>');
      $('#content').append($post);
    }
  }
});
</script>
<script src="https://www.googleapis.com/blogger/v3/blogs/5039479718685240371/posts?callback=handleResponse&key=AIzaSyDxfWmXTRnO5yIp25NvuUEBWKSa_5mqjHA"></script>

关键调整说明

  • 把handleResponse函数放在$(document).ready()内部,保证只有当jQuery完全加载、DOM树准备好后,相关函数才会被定义和执行。
  • 直接在创建元素时就填充标题内容,避免后续批量修改所有.post元素,确保每篇文章的标题正确对应。
  • 给循环变量i加上var声明,避免污染全局变量。

如果还是遇到jQuery加载问题,可以换一个稳定的jQuery CDN链接,或者把jQuery下载到本地引入。

内容的提问来源于stack exchange,提问作者user8342070

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:17:35