Получить код страны с помощью javascript

Я не могу понять, как получить код страны от посетителя, который переходит на мою веб-страницу. Я видел множество других примеров, но ни один из них не использует простой Javascript. Вот мой текущий код:

<!DOCTYPE html>
<html lang="en-US">
<head>
</head>
<body>
    <script type="text/javascript">
        var userip;
    </script>
    <script type="text/javascript" src="https://l2.io/ip.js?var=userip">       </script>

    <script type="text/javascript">
        document.write("IP: ", userip);

        $.get("http://ipinfo.io/"+userip.text(), function (response) {
            reg.text("country code here" + response.country);
        }, "jsonp");
    </script>
</body>
</html>

Я получаю IP-адрес пользователя из запроса JSONP на ipinfo.io, используя $.get метод jQuery.

К сожалению, l2.io.js в настоящее время не возвращает ничего, кроме ip.

Если кто-нибудь может помочь или у вас есть примеры, пожалуйста, свяжите все связанные библиотеки JavaScript, которые потребуются. Спасибо.


person 702cs    schedule 14.03.2016    source источник


Ответы (2)


Согласно документации на веб-сайте, вы сможете получить код страны с помощью ipinfo. попробуйте использовать $ .getJSON вместо $ .get

var country_code = null;
$.getJSON('http://ipinfo.io/' + userip, function(data){
    country_code = data.country;
    alert(country_code);
});
person Xposedbones    schedule 14.03.2016
comment
Я вообще не должен понимать javascript. Я добавил именно это под моим текущим $ .get. Нужно ли мне включать json .js? мне нужно добавить к этому какие-либо разрывы кода или;? Может быть, это работает, так как я могу превратить data.country в переменную в javascript? и будет document.write (переменная); на самом деле работает? Я так заблудился и запутался, прости. - person 702cs; 15.03.2016
comment
Удалите текущий $ .get и замените его приведенным выше кодом, если он не работает, выдает ли консоль какие-либо ошибки? - person Xposedbones; 15.03.2016
comment
Я буквально запускаю все это из файла .html и блокнота, поэтому я не уверен, смогу ли я прочитать консоль или увидеть ее. Извините! Я также заменил свой текущий $ .get на ваш и попытался сделать document.write (data.country) и document.write (data.country.text ()) по-прежнему ничего. - person 702cs; 15.03.2016
comment
Щелкните правой кнопкой мыши в любом месте страницы, нажмите «Проверить элемент», после чего появится вкладка «Консоль». На этой вкладке написано что-то красное? developer.chrome.com/devtools/docs/console - person Xposedbones; 15.03.2016
comment
Uncaught ReferenceError: $ не определен - кстати, спасибо, я понятия не имел, console.log на самом деле была консолью отладки браузеров. Я собираюсь попробовать добавить jquery 2.2 и json libs или что-то в этом роде - person 702cs; 15.03.2016
comment
изменить $ с помощью jQuery - person Xposedbones; 15.03.2016
comment
Вам необходимо включить jQuery на свою страницу: добавьте <script src="https://code.jquery.com/jquery-2.2.1.min.js"></script> вверху страницы. - person JanR; 15.03.2016
comment
Я прошел мимо Uncaught Reference, теперь я получаю: GET ipinfo.io/xx.xx.xx .xx net :: ERR_BLOCKED_BY_CLIENT xx - это мой IP - person 702cs; 15.03.2016
comment
Подождите секунду, похоже, рекламный блок блокирует это. Это явно не сработает. Есть другие способы сделать это? - person 702cs; 15.03.2016
comment
попробуйте отключить блокировку рекламы и посмотрите, работает ли она - person Xposedbones; 15.03.2016
comment
Он отключен и отлично работает. Я собираюсь использовать это сейчас, но, подумав об этом, я считаю, что для достижения этого без блокировки нужно запрашивать базу данных. Но еще раз спасибо за помощь, это работает! - person 702cs; 15.03.2016
comment
Выполнение этого способа почти всегда будет заблокировано, поскольку оно зависит от внешнего сайта, извлекающего ваш IP-адрес. лучший способ сделать это с помощью php - person Xposedbones; 15.03.2016
comment
это не совсем точно обеспечивает правильный код - например, вы получите буквальный PR страны для Пуэрто-Рико (правильно), но также и GB для Соединенного Королевства (возможно, неверно - технически провинции в Великобритании являются странами, и поэтому это вроде как правильно, но это не код страны, это код провинциального уровня) - person roberto tomás; 16.12.2016
comment
Примечание. Некоторые блокировщики рекламы препятствуют работе этих типов вызовов. - person Albert Renshaw; 12.08.2018

Я использовал приведенный ниже код, используя jQuery, и он отлично работает для меня. Я получаю country_code, country_name и т. Д.,.

 jQuery(document).ready(function($) {
    jQuery.getScript('http://www.geoplugin.net/javascript.gp', function() 
    {
        var country = geoplugin_countryName();
        alert(country);
        var code = geoplugin_countryCode();
        alert(code);
        console.log("Your location is: " + country + ", " + zone + ", " + district);
    });
});

Примечание. Не забудьте импортировать скрипт подключаемого модуля, как показано ниже:

<script src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>

person Mehnaz Saheb    schedule 09.11.2016
comment
Иногда сбои, я использовал VPN - указывая на США и пробовал вышеуказанный API, он вернул ЯПОНИЮ. ipinfo.io и другие говорят, что в Соединенных Штатах я нашел ip2c.org - более надежным и БЕСПЛАТНЫМ - person Prem Santh; 07.06.2020