【问题标题】:Why is the data not being show correctly when fetching information from a site?为什么从网站获取信息时数据显示不正确?
【发布时间】:2021-07-06 21:45:07
【问题描述】:

我目前正在编写一个天气应用程序(为了好玩),它可以获取用户的经度和纬度(经许可),然后显示当前天气。不幸的是,天气数据没有正确记录在控制台中。任何帮助将不胜感激!谢谢!

const api = "API---";


window.addEventListener('load', () => {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition((position) => {
            let lat = position.coords.latitude;
            let lon = position.coords.latitude;
            let data = `https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}&appid=${api}`;
            console.log(lat, lon, data);
            fetch(data)
                .then((r) => {
                    return r.JSON;
                })
                .then((data) => {
                    console.log(data);
                })
        });
    };
});

记录的不是天气,而是记录

ƒ json() { [native code] }

我使用的是开放天气,但 API 密钥不会公开显示。感谢您的帮助!

【问题讨论】:

    标签: javascript weather openweathermap


    【解决方案1】:

    您的问题在这里: return r.JSON

    根据MDN Web Docs.json() 函数是一个函数。你需要括号来调用它,就像任何其他函数一样。如果您将该行更改为return r.json();,它应该可以工作。我用我的 API 密钥在我这边进行了测试(尽管没有你拥有的 navigator.geolocation 东西),这对我有用。

    至于为什么你会看到ƒ json() { [native code] },那是因为你返回了一个实际的函数。所以,当你 console.log 返回值时,它显示的是一个函数,而不是你想要的数据。

    换句话说,您的问题似乎是一个错字,忘记在您的函数调用中包含括号。包括括号应该可以解决您的问题。

    【讨论】:

    • 非常感谢!
    • @Jake 如果这对您有帮助,您可以投票并接受它作为答案。如果您仍有问题,我很乐意尝试提供更多帮助。
    【解决方案2】:

    输出是这样的,因为您返回的是 r.JSON,它是一个函数,因此第二个数据是

    ƒ json() { [native code] }
    

    应该是

    fetch(data)
        .then((r) => {
            return r.json();
        })
        .then((data) => {
            console.log(data);
        });
    

    json 是将 JSON 响应解析为原生 JavaScript 对象并返回一个 Promise 的正确函数,该 Promise 使用响应对应的 JavaScript 对象解析

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2020-10-28
      • 1970-01-01
      • 2011-09-16
      相关资源
      最近更新 更多