如何使用javascript访问geo-ip

How to access geo ip look up with javascript

本文关键字:geo-ip 访问 javascript 何使用      更新时间:2023-09-26

我想知道如何使用JavaScript使用此服务的输出。

它不是有效的JSON

http://geoiplookup.wikimedia.org/

编辑以下是我希望检索数据的方式:

$.ajax('http://geoiplookup.wikimedia.org/', {
    crossDomain:true,
    success:function(data,text,xhqr){
        alert(data);
    },
    error:function(jqXHR, textStatus){
        console.log(textStatus);
    }
});

我看到它的响应包含一个字符串,可以用简单的JS轻松处理。试试这个。

var geoStr = 'Geo = {"city":"Woodbury","country":"US","lat":"39.824001","lon":"-75.131798","IP":"98.110.51.114","netmask":"24"};';
var geoJSON = geoStr.split('=')[1];
geoJSON = $.parseJSON(geoJSON.substring(0, geoJSON.length -1));
console.log(geoJSON);

工作演示

jQuery和AJAX将发挥作用。正如ShankarSangoli所说,这将跨领域工作。下面是一个工作示例:

 var query = "select * from html where url='http://geoiplookup.wikimedia.org'"
        var encodedQuery = encodeURIComponent(query.toLowerCase()),
            url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodedQuery + '&format=json&diagnostics=true&callback=?';
        $.ajax({
            dataType: "json",
            url: url,
            async: false,
            success: function (data) {
                var w = data.query.results.body.p;
                var geoJSON = w.split('=')[1];
                geoJSON = $.parseJSON(geoJSON);
                var latitude = geoJSON.lat;
                var longitude = geoJSON.lon;

                console.log('Geo IP: ('+ latitude + ' - ' + longitude +')');
            }
        });

如果你正在使用HTML5地理位置回退方法,你也可以尝试这些链接:http://www.geoplugin.net/json.gphttp://freegeoip.net/json/