views:

67

answers:

3

Hi I found how to get client ip by answer here: http://stackoverflow.com/questions/102605/can-i-lookup-the-ip-address-of-a-hostname-from-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!

A: 

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.

Mohamed Mansour
You can definitely fire crossdomain requests. Read on about the `Access-Control` response headers.
BalusC
Sorry, I forgot to add the link, here it is: [`Access-Control`](http://www.w3.org/TR/cors/).
BalusC
+2  A: 

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"&gt;
</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.

Kobi
A: 

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.

Greg