Как получить данные JSON с URL-адреса с помощью JavaScript. Я пробовал следующее, но он не дает данных 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.info(weather_api);
var a = http.get(weather_api).then(function(response){
position.jsonList=response.data;
});
console.info(a);
}
При печати weather_api он дает полный URL-адрес, но я застрял в том, как получить данные json с этого URL-адреса.
Возможный дубликат Как мне вернуть ответ от асинхронного вызова?
@ John212 Это не имеет ничего общего с их проблемой.
Что такое http?
Он используется для получения данных, потому что отсюда я ссылаюсь на youtube.com/watch?v=7lYxboRqaxk
Я получаю этот api.openweathermap.org/data/2.5/…, но не могу получить данные json, братан @ John212 ...
В ODOO они используют AngularJS?
Нет, я просто пытаюсь.
@ John212 Я не сержусь. Я говорю вам, что вы им не помогли, потому что их проблема не связана с JSON. Они ожидают результата от console.info(a);, который произойдет до завершения асинхронного HTTP-запроса.
Братан, я знаю, как получить данные json в Python, но не знаю в JS. Потому что в python напрямую мы можем использовать: запросы на импорт a = "api.openweathermap.org/data/2.5/…" b = requests.get (a) .json () print (b)
В видео, которым вы поделились, они используют фреймворк AngularJS. Вы должны использовать ту же структуру, тогда можно будет использовать только модуль http. Или вы можете создать такой же модуль самостоятельно с помощью jQuery. Проверьте мой ответ.
Можешь сказать мне решение, братан.
Проверьте мой ответ!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Есть несколько вещей:
#1 Обратитесь к это для асинхронного потока вызовов. Затем узнайте о Обещания в JavaScript.
#2 В руководстве, которому вы следуете, используется Angular.js, который имеет встроенный модуль $http, в котором есть метод get. В вашем случае, похоже, вы не используете Angular.js, а также функция showPosition вызывается navigator.geolocation.getCurrentPosition, поэтому она не будет передавать модуль http при вызове функции showPosition.
Я добавил простой http-модуль с использованием библиотеки jQuery. Итак, чтобы этот код заработал, вам нужно будет включить jQuery в свой html файл. В любом случае следующий код должен дать вам представление о создании объектов и методов в JavaScript, и вы должны иметь возможность заменить jQuery, если вам нужна другая библиотека для HTTP-запросов.
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.info(weather_api);
var a = http.get(weather_api).then(function(response){
position.jsonList=response;
console.info(position.jsonList);
});
}
Примечание. Обратите внимание, что я переместил console.info внутрь обработчика обещаний.
Поместите журнал консоли в функцию обратного вызова. Вы звоните, регистрируете незавершенное обещание, а затем звонок завершается.