2009-10-29 27 views

Respuesta

52

jQuery puede manejar JSONP, simplemente pase una url formateada con la devolución de llamada =? parámetro al método $.getJSON, por ejemplo:

$.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>

Este ejemplo es de un servicio muy simple JSONP implementado con api.ipify.org.

Si no está buscando una solución entre dominios, la secuencia de comandos se puede simplificar aún más, ya que no necesita el parámetro de devolución de llamada, y devuelve JSON puro.

+0

y pruébelo. Gracias. – Wondering

+0

genial, pero la aplicación está por encima de la cuota :( –

+1

'jsonip.appspot.com' también aparentemente admite' CORS' y 'JSONP'. – hippietrail

24

Una simple llamada AJAX a su servidor, y luego la lógica en el servidor para obtener la dirección IP debería hacer el truco.

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

Luego, en php que podría hacer:

<?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; 
} 

Si desea utilizar el IP y asignarlo a una variable, prueba esto. Simplemente llame al GetUserIP()

Cuestiones relacionadas