JSNewbie
JSNewbie

Reputation: 335

javascript getting client ip

Hi I found how to get client ip by answer here: Can I perform a DNS lookup (hostname to IP address) using client-side Javascript?

But I don't understand how to use it.

This is what I have:

var user;
if ($('#user-id').length) {
    user = $('#user-id').text();
} else {
    http://jsonip.appspot.com/?callback=getip
    function getip(json){
       user = json.ip;
    }
}

I don't understand how to include the url and how to use the getip function.

I need to set the user to the ip address in the else.

Thanks!

Upvotes: 3

Views: 12549

Answers (4)

Rishabh Malhotra
Rishabh Malhotra

Reputation: 269

You could use something like this:

<script type="text/javascript">
  var userip;
</script>
...
<script type="text/javascript" src="http://l2.io/ip.js?var=userip"</script>
...
<script type="text/javascript">
  document.write("Your IP is :", userip);
</script>

Here is the url of this library: http://l2.io/

Upvotes: 0

Mohamed Mansour
Mohamed Mansour

Reputation: 40149

You can only access your domain from JavaScript, you cannot do cross-domain communication with JavaScript unless you do the communication with iframes.

If you have a dynamic backend such as PHP, Java, Python, Ruby, CGI, etc you can easily fetch the IP address from the user visiting your page. Each language has their own mechanism.

Upvotes: 0

Greg
Greg

Reputation: 7922

You've got a random, free-floating URL in your javascript syntax.

This is how to make remote JSON request with jquery.

http://api.jquery.com/jQuery.getJSON/

I would suggest you get more familiar with javascript in general.

Upvotes: 0

Kobi
Kobi

Reputation: 137997

Using jQuery, you could make a JSONP call:

$.getJSON('http://jsonip.appspot.com/?callback=?',
        function(data){
          alert(data.ip);
        });

Probably easier to understand - an alternative, without jQuery, would be:

<script type="text/javascript">
    function getip(data){
      alert(data.ip);
    }
</script>
<script type="text/javascript" src="http://jsonip.appspot.com/?callback=getip">
</script>

Note that when you include http://jsonip.appspot.com/?callback=getip as a script in your HTML you get valid JavaScript as response:

getip({"ip": "147.234.2.5", "address":"147.234.2.5"});

This line executes your function with the proper parameter. Note that the function's name is given to it by query string.

Upvotes: 5

Related Questions