Reputation: 15624
I'm trying to write Opera user JS for replacing IP addresses represented in the page as text with its IP location. After googling for a while I found a service which provides exactly the information I needed.
This service for a HTTP query returns the header of the page with meta containing the needed info.
As example, this query: http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=142.34.25.111
(see source of the page)
In the browser this request works fine.
I tried to get this text (as XML) via AJAX, but encountered an error ReferenceError: Security violation
at line xmlhttp.send();
.
So, my questions is:
- Is existing any practice to obtain IP location from IP address via JS (without any fee || registration)
- How I can to replace some content of the one page to modified content of the another page via JS?
PS. I am very new in JS programming.
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
var x = xmlhttp.responseXML.documentElement.documentElement;
var i, s, xx;
s = '';
for (i=0; i < x.length; i++)
{
xx = x[i].documentElement;
if (xx.attributes[0] == 'country') s = s + xx.attributes[1].textContent;
if (xx.attributes[0] == 'region') s = s + ', ' + xx.attributes[1].textContent;
if (xx.attributes[0] == 'city') s = s + ', ' + xx.attributes[1].textContent;
}
document.getElementById("myDiv").innerHTML = s;
}
}
xmlhttp.open("GET","http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=142.34.25.111",false);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</body>
</html>
Test page included.
Ok, Thanks a lot to all!
May be my question is not clear enough.
Lets try again (I told this to myself):
I need JS function like IPAddress2IPLocation(InIPAddress)
which returns IP location in format Country, Region, City
using passed parameter.
Is anybody know answer for my question?
At this time (3:50 AM here) I approved for any suggestions :)
But, in any case, it is not extremely bout my life - it is just interesting about JS.
Upvotes: 0
Views: 2169
Reputation: 1408
Javascript security! Fear not, there are ways to work around the same origin policy.
Getting around same origin policy in javascript without server side scripts
Upvotes: 1
Reputation: 1205
This is probably due to accessing another domain from Ajax. For security reasons, only requests to the same domain name can be made.
The code http://www.codeproject.com/KB/aspnet/aspxcode_net.aspx describes the basics for building ip to location translation.
Upvotes: 1
Reputation: 9748
ReferenceError: Security violation
is not asking you to pay a fee. You are doing Cross-site Scripting which is a security violation on most browsers.
You can avoid this error using a proxy server.
Upvotes: 1