2009-10-29 5 views
36

Ich möchte wissen, wie Client-IP-Adresse mit jQuery bekommen?Wie bekomme ich Client-IP-Adresse mit jQuery

Ist es möglich? Ich weiß, dass reines Javascript nicht kann, aber etwas Code mit JSONP von Stack Overflow selbst bekam.

Gibt es also eine Problemumgehung mit jQuery?

Antwort

52

jQuery kann mit JSONP umgehen, übergeben Sie einfach eine URL mit dem Rückruf formatiert =? Parameter an die $.getJSON Verfahren, zum Beispiel:

$.getJSON("https://api.ipify.org/?format=json", function(e) { 
 
    console.log(e.ip); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Dieses Beispiel einer wirklich einfachen JSONP Service ist implementiert auf mit api.ipify.org.

Wenn Sie keine domänenübergreifende Lösung suchen, kann das Skript noch weiter vereinfacht werden, da Sie den Rückrufparameter nicht benötigen und reines JSON zurückgeben.

+0

wird es versuchen. Danke. – Wondering

+0

cool, aber die App ist über Quote :( –

+1

'jsonip.appspot.com' unterstützt anscheinend auch' CORS 'sowie' JSONP'. – hippietrail

24

Ein einfacher AJAX-Aufruf an Ihren Server, und dann sollte die serverseitige Logik, um die IP-Adresse zu erhalten, den Trick tun.

$.getJSON('getip.php', function(data){ 
    alert('Your ip is: ' + data.ip); 
}); 

dann in PHP können Sie tun:

<?php 
/* getip.php */ 
header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

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']; 
} 
print json_encode(array('ip' => $ip)); 
2
function GetUserIP(){ 
    var ret_ip; 
    $.ajaxSetup({async: false}); 
    $.get('http://jsonip.com/', function(r){ 
    ret_ip = r.ip; 
    }); 
    return ret_ip; 
} 

Wenn Sie die IP verwenden möchten, und ordnen Sie diese auf eine Variable, versuchen. Rufen Sie einfach GetUserIP()

Verwandte Themen