javascript - 如何让 JSON 数据显示在 HTML div 中?
问题描述
试图让这个 json 数据显示在 HTML div 中
[{
"botten": ["Krispig", "tunn"]
},
]
HTML 文档中的 div 具有类名box1_data
。这是我的脚本:
var bottenInfo = document.getElementsByClassName("box1_data");
$.getJSON('choosepizza.json', function(choosePizzaData) {
choosePizza(choosePizzaData);
function choosePizza(choosePizzaData) {
var request = new XMLHttpRequest();
request.open('GET', 'choosepizza.json');
request.onload = function() {
var data = JSON.parse(request.responseText);
renderHTML(data);
};
request.send();
function renderHTML(bottenData) {
var text = "";
for (var i = 0; i < bottenData.length; i++) {
text += '<p>' + bottenData[i].botten + '<p>';
}
bottenInfo.innerHTML = text;
}
});
我究竟做错了什么?
krispig
并且tunn
应该出现在.box1_data
div中。
解决方案
关于纯 JS 和 jQuery 之间的区别以及 AJAX 的工作方式,您的代码似乎相当混乱。您当前使用不同的逻辑两次发出相同的请求,解析已解析的对象,未正确访问结果对象,并尝试将节点集合作为单个元素访问。
要解决此问题,您只需遍历结果,该结果将自动反序列化为您的对象,并生成要放置在所需元素中的 HTML:
$.getJSON('choosepizza.json', function(choosePizzaData) {
var html = choosePizzaData[0].botten.map(function(botten) {
return '<p>' + botten + '</p>';
});
$(".box1_data").html(html);
});
这是一个没有 AJAX 的工作示例,显然在 SO 上不起作用:
// the response from the request:
var choosePizzaData = [{
"botten": ["Krispig", "tunn"]
}]
// within the AJAX callback
var html = choosePizzaData[0].botten.map(function(botten) {
return '<p>' + botten + '</p>';
});
$(".box1_data").html(html);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box1_data"></div>
推荐阅读
- android - 我可以在 Google 地图的动态 API 调用中指定计费使用限制吗
- javascript - 将三个 HTML 选择元素作为一个发送到 JSON
- python - Python TypeError:“NoneType”对象不能使用 minidon 和 beautifulsoup 调用
- c# - Unity 依赖注入框架在我的应用程序中不起作用
- swift - 如何在 XCode Playground 中保存控制台输出?
- android - 将子视图控制器膨胀到父视图控制器中的固定位置
- php - Laravel:csv 验证
- powerbi - M 幂查询 - 重建此数据组合
- c++ - 对函数的 AST 声明的抽象格式感到困惑
- dc.js - crossfilter Reduce 得到最小值