0

Я запрашиваю страну с https://ipinfo.io, но в переменную не могу записать ее. Выводит undefined:

var country;
$.get("https://ipinfo.io", function(response) {
    console.log(response.country); // RU
    country = response.country;
}, "jsonp");
console.log(country); // undefined

1 Answers1

0

Изучите асинхронный код в JS и вам станет понятнее

https://learn.javascript.ru/fetch
https://learn.javascript.ru/settimeout-setinterval

$.get("https://ipinfo.io", function(response) {
    printCountry(response);
}, "jsonp");

function printCountry(res) { document.body.innerHTML = <p>${res.country} ${res.city} ${res.ip}</p>; }

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  • console.log оно и там выводит. а как записать в переменную страну, чтобы в коде вызвать можно было? – justLive666 Apr 21 '21 at 13:02
  • именно если в переменную записать и вывести то undefined – justLive666 Apr 21 '21 at 13:04
  • @justLive666 так тут всё выводит. Это асинхронный код. Не синхронный, который выполняется сверху вниз сразу. – Михаил Камахин Apr 21 '21 at 13:04
  • @justLive666 смотрите всё в ответе дубликате. там всё написано как что делать – Алексей Шиманский Apr 21 '21 at 13:05
  • не получается сделать :( пробовал async и await: то ошибки, то не работает. Мне нужно записать в переменную страну пользователя, которую можно использовать вне функции, как у меня в примере. – justLive666 Apr 21 '21 at 21:13
  • @justLive666 я это и сделал, вывел инфу на страницу. Переменная res - это то, что пришло с сервера – Михаил Камахин Apr 22 '21 at 07:31