无法从 Nominatim 的 API 获取 JSON 数据

Unable to get JSON data from Nominatim's API

我的目标是在Nominatim的API的帮助下,使用JavaScript获取世界上每个国家和地区的经度、纬度和名称,以便将它们添加为微小的和 Leaflet 世界地图中的可点击点。

使用浏览器访问 url 工作正常:

https://nominatim.openstreetmap.org/search?country=SG&format=json

我似乎无法收到任何 console.log 声明,即使是一个国家:

var XHR = new XMLHttpRequest();
XHR.onreadystatechange = function () {
    if (XHR.readyState == 4 && XHR.status == 200) {
        console.log(XHR.responseText);
    }
};
XHR.open("GET", "https://www.nominatim.openstreetmap.org/search?country=SG&format=json");
XHR.send();
console.log(XHR);

所以,我尝试了另一种方法,但失败了:

let url = 'https://www.nominatim.openstreetmap.org/search?country=SG&format=json';
fetch(url)
    .then(response => response.json())
    .then(function (data) {
        latitude = data.lat;
        longitude = data.lon;
    });
console.log(latitude);
console.log(longtitude);

请指导我哪里出错了,或者我可以用什么 API 来实现上述目标。谢谢。

在您的 URL 开头丢失 wwwnominatimopenstreetmap 的子域。这通常由 Web 浏览器自动完成,这就是为什么当您在浏览器中输入 URL 时它不会发生的原因

工作代码:

var XHR = new XMLHttpRequest();
XHR.onreadystatechange = function () {
    if (XHR.readyState == 4 && XHR.status == 200) {
        console.log(XHR.responseText);
    }
};
XHR.open("GET", "https://nominatim.openstreetmap.org/search?country=SG&format=json");
XHR.send();
console.log(XHR);