Как получить IP-адрес клиента с помощью jQuery - PullRequest
38 голосов
/ 29 октября 2009

Я хочу знать, как получить IP-адрес клиента с помощью jQuery?

Возможно ли это? Я знаю, что чистый javascript не может, но получил некоторый код, используя JSONP от самого Stack Overflow.

Итак, есть ли обходной путь с использованием jQuery?

Ответы [ 3 ]

56 голосов
/ 29 октября 2009

jQuery может обрабатывать JSONP, просто передайте URL, отформатированный с помощью callback =? параметр метода $.getJSON, например:

Этот пример имеет действительно простой сервис JSONP, реализованный с помощью api.ipify.org.

Если вы не ищете междоменное решение, сценарий можно упростить еще больше, поскольку вам не нужен параметр обратного вызова и вы возвращаете чистый JSON.

24 голосов
/ 29 октября 2009

Простой AJAX-вызов на ваш сервер, а затем серверная логика для получения IP-адреса должны помочь.

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

Тогда в php вы можете сделать:

<?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 голосов
/ 15 марта 2016
function GetUserIP(){
  var ret_ip;
  $.ajaxSetup({async: false});
  $.get('http://jsonip.com/', function(r){ 
    ret_ip = r.ip; 
  });
  return ret_ip;
}

Если вы хотите использовать IP-адрес и назначить его переменной, попробуйте это. Просто позвоните GetUserIP()

...