Как получить данные json из url-адреса в odoo javascript

Как получить данные 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-адреса.

Поместите журнал консоли в функцию обратного вызова. Вы звоните, регистрируете незавершенное обещание, а затем звонок завершается.

Reinstate Monica Cellio 25.04.2018 11:45

Возможный дубликат Как мне вернуть ответ от асинхронного вызова?

Reinstate Monica Cellio 25.04.2018 11:46

@ John212 Это не имеет ничего общего с их проблемой.

Reinstate Monica Cellio 25.04.2018 11:46

Что такое http?

explorer 25.04.2018 11:48

Он используется для получения данных, потому что отсюда я ссылаюсь на youtube.com/watch?v=7lYxboRqaxk

user_123 25.04.2018 11:49

Я получаю этот api.openweathermap.org/data/2.5/…, но не могу получить данные json, братан @ John212 ...

user_123 25.04.2018 11:51

В ODOO они используют AngularJS?

explorer 25.04.2018 11:53

Нет, я просто пытаюсь.

user_123 25.04.2018 11:54

@ John212 Я не сержусь. Я говорю вам, что вы им не помогли, потому что их проблема не связана с JSON. Они ожидают результата от console.info(a);, который произойдет до завершения асинхронного HTTP-запроса.

Reinstate Monica Cellio 25.04.2018 11:55

Братан, я знаю, как получить данные json в Python, но не знаю в JS. Потому что в python напрямую мы можем использовать: запросы на импорт a = "api.openweathermap.org/data/2.5/…" b = requests.get (a) .json () print (b)

user_123 25.04.2018 11:58

В видео, которым вы поделились, они используют фреймворк AngularJS. Вы должны использовать ту же структуру, тогда можно будет использовать только модуль http. Или вы можете создать такой же модуль самостоятельно с помощью jQuery. Проверьте мой ответ.

explorer 25.04.2018 11:58

Можешь сказать мне решение, братан.

user_123 25.04.2018 12:02

Проверьте мой ответ!

explorer 25.04.2018 12:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
13
503
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько вещей:

  1. Вы должны понимать асинхронный поток вызовов.
  2. Вы должны понимать все в учебнике, если вы его следуете.

#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 внутрь обработчика обещаний.

Другие вопросы по теме