2015-11-28 3 views
0

Если я назову ссылку http://freegeoip.net/json/, то она показывает мою страну правильно. Но если я назову это на своем веб-сайте JavaScript, то его покажет мне USA (Cloudflare Server). Как я могу передать это, чтобы показать правильную страну?Поистине страна с облачным флагом

<script> 
    jQuery.ajax({ 
     url: '//freegeoip.net/json/', 
     type: 'POST', 
     dataType: 'jsonp', 
     success: function(location) { 
      $("div.country").html(location.country_name); 
     } 
    }); 
</script> 
<div class="country"></div> 
+0

вы работаете его с сервера или локальной среде? –

+0

Сценарий вызывается с сервера .. Ссылка вызывается локально браузером. – karadayi

ответ

1

если вы делаете звонок с вашего сервера это получить их IP вам нужно сделать что-то подобное, чтобы получить пользовательский IP и послал его в freegeoip

<script>  
function myIP() { 
    if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); 
    else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 

    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false); 
    xmlhttp.send(); 

    hostipInfo = xmlhttp.responseText.split("\n"); 

    for (i=0; hostipInfo.length >= i; i++) { 
     ipAddress = hostipInfo[i].split(":"); 
     if (ipAddress[0] == "IP") return ipAddress[1]; 
    } 

    return false; 
} 

var ip = myIP(); 

jQuery.ajax({ 
     url: 'http://freegeoip.net/json/'+ip.replace(' ',''), 
     type: 'POST', 
     dataType: 'jsonp', 
     success: function(location) { 
      $("div.country").html(location.country_name); 
     } 
    }); 

    </script> 
    <div class="country"></div> 

becaus пример выше, зависит в сервис http://api.hostip.info/get_html.php вы можете добавить свой собственный упрощенно PHP скрипт, чтобы получить пользовательский адрес IP-Виль

if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
    $ip = $_SERVER['HTTP_CLIENT_IP']; 
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} else { 
    $ip = $_SERVER['REMOTE_ADDR']; 
} 
    echo $ip; 

обновление снова вы можете получить всю информацию без их ф просто с геолокации и обратного геокодирования пример приложения

интерфейс

<script> 
$(document).ready(function() {  

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
} 

function showPosition(position) { 
    jQuery.ajax({ 
     url: 'geocoder.php', 
     type: 'POST', 
     data:position, 
     dataType: 'json', 
     success : function(response) { 
     $(".country").text(response.address.country); 
     $(".postal_code").text(response.address.postcode); 
     } 

    }) 
} 

}) 

</script> 
<div class="country"></div> 
<div class="postal_code"></div> 

geocoder.php

<?php 
$lat = $_POST['coords']['latitude']; 
$long = $_POST['coords']['longitude']; 
$url = "http://nominatim.openstreetmap.org/reverse?format=json&lat=".$lat."&lon=".$long; 
$curl_handle=curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL,$url); 
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'examples'); 
$query = curl_exec($curl_handle); 
curl_close($curl_handle); 
$jsondata = json_decode($query,true); 
echo json_encode($jsondata); 


?> 
+0

, который является примером, он использует службу из 'http: // api.hostip.info/get_html.php', я бы sugest, чтобы сделать вашу собственную услугу, чтобы получить вашего пользователя ip –

+0

Спасибо большое Мат! Есть ли способ получить больше данных, таких как PostalCode и т. Д.? – karadayi

+1

вы можете использовать некоторую услугу геокодирования, но ваш результат не будет на 100% точным, как google geocode.give, а я добавлю пример –

Смежные вопросы