【发布时间】:2020-07-24 09:40:36
【问题描述】:
我一直在尝试这样做,但我只能将数据填充到 HTML 的 select 中。
2 个问题。
第一季度。 我能够使用 AJAX 从 API 获取 JSON 数据。 (使用 AJAX 是因为我了解到它不需要浏览器刷新即可获取新数据):
$(document).ready(function() {
getDataJson();
});
function getDataJson(ajaxurl) {
$.ajax({
method: "GET",
url: "https://corona.lmao.ninja/v2/jhucsse",
datatype: "json",
success: onSuccess,
error: onError
});
}
接下来我尝试在我的 HTML 中填充 OnSuccess 上的选择:
function onSuccess(jsonReturn) {
$("#dropdown").empty();
//console.log(jsonReturn);
let dropdown = $('#dropdown');
dropdown.empty();
dropdown.append('<option selected="true" disabled>Choose Country</option>');
dropdown.prop('selectedIndex', 0);
// Populate dropdown with list of countries
$.each(jsonReturn, function (key, entry) {
dropdown.append($('<option></option>').attr('value', entry.data).text(entry.data));
});
var $dropdown = $('#dropdown'),
$objView = $('#objView'),
$docFragment = $(document.createDocumentFragment());
for (var prop in jsonReturn) {
$('<option/>', {
val: prop,
text: prop
}).appendTo($docFragment);
}
$dropdown.append($docFragment);
$dropdown.on('change', function() {
var objString = JSON.stringify(jsonReturn[$dropdown.val()]);
objString = objString.replace(/[\{\}\[\]\"]*/ig, ''); // Remove unwanted chars
objString = objString.replace(/\,/ig, '<br/>'); // Replace commas with new lines (i.e. br tags)
$objView.html(objString);
});
$dropdown.trigger('change');
}
//if JSON fails
function onError() {
$("#dropdown").html("i failed.");
}
它奏效了。但随后我尝试执行我想做的下一步,即当我单击一个国家/地区的名称时,它应该显示其 JSON 数据的其余部分以及名称及其值。
How to display JSON data on click with JavaScript
这不是确切的,但足够接近,但它是一个非常不同(困难?对我来说)我无法理解的解决方案。
目前我的下拉列表如下所示:
JSFIDDLE
现在我打算这样做Populate HTML Table with Certain Items from a JSON Array
但每个国家/地区的所有其他 JSON 数据都是这样的How to display JSON data on click with JavaScript
如何解决剩下的脚本?
Q2.如何减少 AJAX 获取延迟?
即使数据较少,我也注意到了一点滞后/缓慢。还是只是正常现象?
【问题讨论】:
标签: javascript html json ajax api