下面的代码从URL(可在调试控制台中读取)获取文本,但我无法将该数据作为变量访问,然后可以在其他地方使用.

该代码目前会产生"数据不可迭代"错误,我try 了JSON.parse(解析)数据,但没有取得多少成功.

例如,如果我想要将获取的数据打印到页面正文上,我该如何着手呢?

$(document).ready(function() {
  $("#ajaxButton").click(function() {
    $.get("https://v2.jokeapi.dev/joke/Programming?type=single", function(data, status) {
      console.log(data);

      var addStr = "";
      for (var x of data) {
        addStr += "<p>" + x.Any + "</p>";
      }

      $("#here").html(addStr);
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div id="here"></div>
<p id="joke">Want to hear a joke?</p>
<br>
<button id="ajaxButton">yes</button>

推荐答案

问题在于反序列化的响应不是数组,而是对象.这就是为什么不能在for循环中迭代它的原因.

要执行所需的操作,只需在对UI的响应中输出joke属性的内容:

jQuery($ => {
  const $here = $('#here');

  $("#ajaxButton").on('click', function() {
    $.get("https://v2.jokeapi.dev/joke/Programming?type=single", response => {
      $here.html(`<p>${response.joke}</p>`);
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<p id="joke">Want to hear a joke?</p>
<div id="here"></div>
<button id="ajaxButton">yes</button>

Html相关问答推荐

使用固定的HTML代码创建两个可向右滚动的行

有没有一种方法可以用css和html在桌面上并排显示列,在移动设备上显示一个下方的列?

如何使我的组织 struct 图的连接线响应?

Tumblr博客:如何修复提交页面和询问页面框列计数问题?

如何在div中淡入和淡出渐变背景?

为什么在添加文本时网格区域会调整大小?

粘滞的导航栏延伸到超过页边距的右侧

未知高度正在应用于前标记

为什么前端框架可以创建自定义属性,而我却被期望在挖掘之前添加数据

你将如何为手机制作导航栏

如何制作';在第';页中搜索;是否发现多个元素中的单词?

如何在悬停时使矩形按钮上的边框变圆

CSS Grid 布局:1 大图和 3 小图

SVG 填充 colored颜色 不使用轮廓填充空白区域

CSS 跨度与子元素交替 colored颜色

在shiny 的应用程序中使用图标功能时出错

使用模板循环每行列出 3 个 bootstrap 卡

使用 bootstrap-icons 的未排序图标堆栈

Angular Material Hide Password 在输入时切换

我的卡片内容无法在 bootstrap 5 中正确居中