Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用json数据填充,并在单击时显示值_Javascript_Html_Json_Ajax_Api - Fatal编程技术网

Javascript 使用json数据填充,并在单击时显示值

Javascript 使用json数据填充,并在单击时显示值,javascript,html,json,ajax,api,Javascript,Html,Json,Ajax,Api,我在JS是一个彻头彻尾的笨蛋,我最近开始玩API和JS,所以请耐心听我说。在过去的三天里,我一直在尝试自己做这件事,但经过大量搜索之后,我仍然只能在select of HTML中填充数据 2个问题 问题1。 我能够使用AJAX从API获取JSON数据。使用AJAX是因为我了解到它不需要浏览器刷新来获取新数据 接下来,我尝试在OnSuccess上填充HTML中的select function onSuccess(jsonReturn) { $("#dropdown").empty();

我在JS是一个彻头彻尾的笨蛋,我最近开始玩API和JS,所以请耐心听我说。在过去的三天里,我一直在尝试自己做这件事,但经过大量搜索之后,我仍然只能在select of HTML中填充数据

2个问题

问题1。 我能够使用AJAX从API获取JSON数据。使用AJAX是因为我了解到它不需要浏览器刷新来获取新数据

接下来,我尝试在OnSuccess上填充HTML中的select

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数据以及名称和它们的值。 这不是确切的,但足够接近,但这是一个非常不同的困难?对我来说,解决方案,我无法理解

目前我的下拉列表如下所示

现在我打算这么做

但是对于每个国家,其他的JSON数据都是这样的

如果有人能指导我完成剩下的脚本编写,或者如果有任何简单/更好的方法可以完成我希望通过理解性解释完成的工作,我将不胜感激

问题2。如何减少AJAX抓取延迟

即使数据较少,我也注意到有一点滞后/缓慢。还是只是正常

如果有一个很好的方法开始学习JS的新手网站,图茨等。。一定要让我知道

提前谢谢

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.");
}