如何使用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 回答
几件事情:
您必须了解异步调用流程 .
如果您正在学习教程,您必须了解教程中的所有内容 .
#1
请参阅this以获取异步呼叫流程 . 然后在JavaScript中了解Promises .#2
您正在使用的教程是使用Angular.js,它具有内置的$http
模块,其中包含get
方法 . 在你的情况下,看起来,你没有使用Angular.js,并且showPosition
函数被navigator.geolocation.getCurrentPosition
调用,因此在调用showPosition
函数时不会传递http
模块 .我使用
jQuery
库添加了一个简单的http模块 . 因此,要使此代码有效,您必须在html文件中包含jQuery
. 在任何情况下,以下代码都必须让您了解如何在JavaScript中创建对象和方法,如果您想要一些其他的HTTP请求库,您必须能够替换jQuery .注意:请注意,我已将
console.log
移动到promise处理程序中 .