首页 文章

如何从odoo javascript中的url获取json数据

提问于
浏览
0

如何使用JavaScript从url获取JSON数据 . 我尝试了以下但它没有给出json数据 .

var GetLocation = function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } 
    else { 
        alert("Geolocation is not supported by this browser.");
    }
}

function showPosition(position, http) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    var app_id = '6784429f5eff661309aaa5280a143f97';
    var api = "http://api.openweathermap.org/data/2.5";
    var weather_api = api +"/weather?appid="+app_id+"&lat="+lat+"&lon="+lon+"&units=metric";
    // console.log(weather_api);
    var a = http.get(weather_api).then(function(response){
        position.jsonList=response.data;

    });
    console.log(a);


}

打印weather_api时,它会提供完整的URL,但我仍然不知道如何从该URL获取json数据 .

1 回答

  • 0

    几件事情:

    • 您必须了解异步调用流程 .

    • 如果您正在学习教程,您必须了解教程中的所有内容 .

    #1 请参阅this以获取异步呼叫流程 . 然后在JavaScript中了解Promises .

    #2 您正在使用的教程是使用Angular.js,它具有内置的 $http 模块,其中包含 get 方法 . 在你的情况下,看起来,你没有使用Angular.js,并且 showPosition 函数被 navigator.geolocation.getCurrentPosition 调用,因此在调用 showPosition 函数时不会传递 http 模块 .

    我使用 jQuery 库添加了一个简单的http模块 . 因此,要使此代码有效,您必须在html文件中包含 jQuery . 在任何情况下,以下代码都必须让您了解如何在JavaScript中创建对象和方法,如果您想要一些其他的HTTP请求库,您必须能够替换jQuery .

    var http = {
      get: function(url) {
        return new Promise(function(resolve, reject) {
          $.get(url, resolve).fail(reject);
        })
      }
    };
    
    var GetLocation = function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition);
        } 
        else { 
            alert("Geolocation is not supported by this browser.");
        }
    }
    
    function showPosition(position) {
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;
        var app_id = '6784429f5eff661309aaa5280a143f97';
        var api = "http://api.openweathermap.org/data/2.5";
        var weather_api = api +"/weather?appid="+app_id+"&lat="+lat+"&lon="+lon+"&units=metric";
        // console.log(weather_api);
        var a = http.get(weather_api).then(function(response){
            position.jsonList=response;
            console.log(position.jsonList);
        });
    
    
    
    }
    

    注意:请注意,我已将 console.log 移动到promise处理程序中 .

相关问题