Как использовать запрос API DarkSky с $ .loadJSON? - PullRequest
0 голосов
/ 14 октября 2019

Мое приложение погоды должно использовать информацию о погоде, поэтому я использовал DarkSky, чтобы дать мне эту информацию. Я решил использовать jQuery $.loadJSON для получения данных о погоде из API. Почему приведенный ниже код не работает?

Я попытался просмотреть документацию по jQuery, но не нашел ошибок. Я поменял $.loadJSON() на $.ajax() и $.get(). Я проверил, что долгота и широта правильные. Я удостоверился, что нет никаких ошибок консоли.


let latitude = place.geometry.location.lat();
let longitude = place.geometry.location.lng();
let api = `https://api.darksky.net/forecast/[API Key]/${latitude},${longitude}`;

$.getJSON(api, (data, status, xhr) => {
    alert("API called.");

    let locationElement = document.querySelector("[data-location]");
    let statusElement = document.querySelector("[data-status]");
    let temperatureElement = document.querySelector("[data-temperature]");
    let humidityElement = document.querySelector("[data-humidity]");
    let windElement = document.querySelector("[data-wind]");

    locationElement.innerHTML = place.formatted_address;
    statusElement.innerHTML = data.currently.summary;
    temperatureElement.innerHTML = data.currently.temperature;
    humidityElement.innerHTML = data.currently.humidity;
    windElement.innerHTML = data.currently.windSpeed;
});

Мой ожидаемый результат - то, что код отредактирует все метки на странице к информации о погоде. Фактический результат заключается в том, что ничего не произошло. Ярлыки остались в состоянии по умолчанию.

1 Ответ

0 голосов
/ 14 октября 2019

Вы должны получить ошибки консоли. Если вы этого не сделаете, то у вас может возникнуть дополнительная проблема.

Однако нет смысла пытаться решить , что . Как они объясняют в своих часто задаваемых вопросах, они не разрешают запросы кросс-происхождения на стороне клиента по соображениям безопасности.

Почему я получаю ошибку Нет 'Access-Заголовок Control-Allow-Origin 'присутствует на запрашиваемом ресурсе, когда я пытаюсь вызвать API? Мы очень серьезно относимся к безопасности в Dark Sky. В качестве меры безопасности мы отключили обмен ресурсами между источниками (CORS) на наших серверах.

Ваш вызов API включает в себя ваш секретный ключ API как часть запроса. Если бы вы делали вызовы API из клиентского кода, любой мог извлечь и использовать ваш ключ API, что привело бы к счету, который вам пришлось бы оплатить. Мы отключаем CORS, чтобы сохранить секретный ключ API в секрете.

Чтобы предотвратить злоупотребление ключами API, необходимо настроить прокси-сервер для скрытого вызова нашего API. Затем вы можете предоставлять прогнозы своим клиентам, не раскрывая свой ключ API.

...