Занимает некоторое время для загрузки данных (даже в этой более короткой версии json имя кнопки после загрузки меняется на полное).Но работает даже во фрагменте.Проблема была неиспользованным параметром функции, а затем, когда данные не были загружены.
function loadData() {
var api = $.getJSON("https://api.data.gov.sg/v1/environment/rainfall",
function rainfall(data_rainfall) {
apiGeo = { type: "FeatureCollection", features: [], input: api.responseJSON };
//---- apiGeo is populated here ----//
console.log(apiGeo); //displays data in GeoJSON format in browser console
document.body.getElementsByTagName("BUTTON")[0].innerText += " GeoJSON";
});
}
function exportToJsonFile() {
downloadObjectAsJson(apiGeo, "data");
}
function downloadObjectAsJson(exportObj, exportName) {
if (navigator.msSaveBlob) { // IE10+
var blob = new Blob([JSON.stringify(exportObj)], {type : 'application/json'});
return navigator.msSaveBlob(blob, exportName + ".json");
}
var dataStr = "data:application/json;charset=utf-8," + encodeURIComponent(JSON.stringify(exportObj));
var downloadAnchorNode = document.createElement('a');
downloadAnchorNode.setAttribute("href", dataStr);
downloadAnchorNode.setAttribute("download", exportName + ".json");
downloadAnchorNode.innerText = exportName;
document.body.appendChild(downloadAnchorNode); // required for firefox
downloadAnchorNode.click();
downloadAnchorNode.remove();
}
loadData()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="exportToJsonFile()">Download</button>