Найдите трехбуквенный код страны, используя HTML и Javascript

Я пытаюсь найти местоположение пользователя, то есть в какой стране он просматривает. Для этого мне нужно использовать HTML и Javascript. Я видел различные сообщения об этом в stackoverflow, в которых люди предлагали использовать разные API. Меня в основном интересуют любые бесплатные API, которые могут дать мне трехбуквенный код страны, а не двухбуквенный. Меня устраивает любой другой API, мне не обязательно использовать IPInfo, я также могу использовать геоназвания.

И после нахождения кода страны пользователя мне нужно сделать такой URL-адрес, предположим, что код страны — США, тогда он должен быть таким:

some_url&countryCode=USA

если код страны IND, то должно быть так:

some_url&countryCode=IND

У меня есть приведенный ниже код, который найдет currentLocation, но код страны состоит только из двух букв. Мне нужен трехбуквенный код страны, а затем соответствующий URL-адрес.

<html>
    <head>
        <title>Get web visitor's location</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

    <script>

    $.get("http://ipinfo.io", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#address").html("Location: " + response.city + ", " + response.region);
    $("#details").html(JSON.stringify(response, null, 4));
    }, "jsonp");

    </script>

    </head>
    <body>
<hr/>
<div id="ip"></div>
<div id="address"></div>
<hr/>Full response: <pre id="details"></pre>

<a href="url&country=countryCode">url</a>

    </body>
</html>

Кто-нибудь может мне с этим помочь?


person arsenal    schedule 03.08.2013    source источник
comment
Я также в порядке с другими бесплатными API. А геоназвания?   -  person arsenal    schedule 03.08.2013
comment
У меня до сих пор нет решения по этому вопросу. Может кто-нибудь помочь мне?   -  person arsenal    schedule 03.08.2013


Ответы (2)


ipinfo.io НЕ содержит трехбуквенный код страны. Вам придется вручную создать массив:

 var threeLtrCC.US = 'USA';
 var threeLtrCC.IN = 'IND';
 ...
 $.get("http://ipinfo.io", function (response) {
     var cc = threeLtrCC[response.country];
     $('#newURL').text('some_url?countryCode=' + cc);
     $('#newURL').attr('href','some_url?countryCode=' + cc);         
     $("#details").html(JSON.stringify(response, null, 4));
 }, "jsonp");

а затем используйте response.country в качестве ключа, чтобы найти значение из вашего домашнего массива.

HTML

<a id="newURL"></a>
person DevlshOne    schedule 03.08.2013
comment
Я пробовал приведенный выше код, он почему-то не работает. Можете ли вы также предоставить пример JSFiddle? - person arsenal; 03.08.2013
comment
И если геомэ работает лучше, чем IPInfo, то этот пример мне тоже очень поможет. - person arsenal; 03.08.2013
comment
Вы не можете сделать jsFiddle с междоменным вызовом AJAX. Если вы просто посмотрите на мой код вместе с документацией с сайта ipinfo.io, я уверен, что вы соберете его воедино. - person DevlshOne; 03.08.2013
comment
Как-то у меня не получается это совместить. Я сталкиваюсь с большой проблемой в этом. Я также пытаюсь использовать геоназвания. Но не повезло. Любая из них меня устраивает. - person arsenal; 03.08.2013

Я не думаю, что ipinfo предоставляет трехбуквенный код страны. Мы должны использовать массив со всеми доступными кодами страны и сопоставлять их с трехбуквенным кодом страны.

http://www.worldatlas.com/aatlas/ctycodes.htm

Надеюсь, поможет

person Durai    schedule 03.08.2013
comment
А как насчет других API? - person arsenal; 03.08.2013