Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get client IP address using jQuery

I want to know how to get client IP address using jQuery?

Is it possible? I know pure javascript can't, but got some code using JSONP from Stack Overflow itself.

So, is there any workaround using jQuery?

like image 506
Wondering Avatar asked Oct 29 '09 06:10

Wondering


People also ask

Can I get IP address from JavaScript?

To get the client's public IP address, JavaScript acts as a third-party server-side language. JavaScript can't do it alone, so, jQuery is added to do this. JavaScript works with third-party applications to fetch the IP addresses.


3 Answers

jQuery can handle JSONP, just pass an url formatted with the callback=? parameter to the $.getJSON method, for example:

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

This example is of a really simple JSONP service implemented on with api.ipify.org.

If you aren't looking for a cross-domain solution the script can be simplified even more, since you don't need the callback parameter, and you return pure JSON.

like image 157
Christian C. Salvadó Avatar answered Oct 17 '22 22:10

Christian C. Salvadó


A simple AJAX call to your server, and then the serverside logic to get the ip address should do the trick.

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

Then in php you might do:

<?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));
like image 37
Alex Sexton Avatar answered Oct 17 '22 22:10

Alex Sexton


function GetUserIP(){
  var ret_ip;
  $.ajaxSetup({async: false});
  $.get('http://jsonip.com/', function(r){ 
    ret_ip = r.ip; 
  });
  return ret_ip;
}

If you want to use the IP and assign it to a variable, Try this. Just call GetUserIP()

like image 4
Akash Shah Avatar answered Oct 17 '22 21:10

Akash Shah