如何使用javascript访问geo ip查找

时间:2012-01-15 03:38:59

标签: javascript jquery

我想知道如何使用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);
    }
});

2 个答案:

答案 0 :(得分:2)

我看到它的响应包含一个字符串,可以使用简单的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);

正在使用 Demo

答案 1 :(得分:0)

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.gp http://freegeoip.net/json/