Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从IP获取地理位置,并使用;ipinfodb";_Javascript_Json_Geolocation_Ip - Fatal编程技术网

Javascript 从IP获取地理位置,并使用;ipinfodb";

Javascript 从IP获取地理位置,并使用;ipinfodb";,javascript,json,geolocation,ip,Javascript,Json,Geolocation,Ip,我知道很好的javascript,但对json完全是新手,需要做以下工作: 使用“ipinfodb”从IP获取地理位置 像这样的回答: OK;;174.88.229.95;CA;CANADA;QUEBEC;MONTREAL;H1A 0A1;45.5088;-73.5878;-04:00 我找到了很多代码,但都似乎很复杂,而且很长,有更多的选项,比如将结果保存在cookies中 我需要最少必要的代码来检索这些信息 为了把它们保存在饼干里,还有更多,我想在我死后自己去照顾它。。(我不喜欢写我不懂的

我知道很好的javascript,但对json完全是新手,需要做以下工作:

使用“ipinfodb”从IP获取地理位置 像这样的回答:

OK;;174.88.229.95;CA;CANADA;QUEBEC;MONTREAL;H1A 0A1;45.5088;-73.5878;-04:00
我找到了很多代码,但都似乎很复杂,而且很长,有更多的选项,比如将结果保存在cookies中 我需要最少必要的代码来检索这些信息 为了把它们保存在饼干里,还有更多,我想在我死后自己去照顾它。。(我不喜欢写我不懂的代码) 最好是一个简单的函数,它以字符串或数组的形式返回这些信息,如下所示

function getLocFromIP(IP){
    (js + json code)
    return result;
}
非常感谢


谢谢大家的回复,我正在尝试筛选出解决方案,虽然效果不错,但我对结果还不太满意。。 我将在这里重新表述我的问题: 我是否可以用最简单的方法(javascript)从ip检索地理位置,这意味着不需要json或jquery。。 ajax将是完美的,但它在域间(不同域)不起作用 再次感谢

OK;;174.88.230.88;CA;CANADA;QUEBEC;MONTREAL;H1A 0A1;45.5088;-73.5878;-04:00

您发布的示例不是有效的JSON(您可以在类似的地方检查某些内容是否是有效的JSON)。这就是说,看看ipinfo数据库网站,他们似乎有办法使用API获得JSON输出(请参阅)

一旦获得了有效的JSON,就可以使用。有关使用它的一些示例,请参见

所以总的想法是

function getLocFromIP(IP){
    //(js code to use ipinfodb API to get valid JSON reponse)
    //(js code using JSON.parse to parse the received JSON reponse)
    //(js code to get whatever you want as the result)
    return result;
}
作为补充说明,如果您使用jQuery,您还可以使用jQuery.parseJSON解析JSON(请参阅),如果您预期客户端使用的是可能不支持JSON.parse的旧浏览器,这将更加可靠。

需要一些查询字符串,如ip地址之外的
&format=JSON&callback=?
,以获取JSON

然后得到如下json:

{
    "statusCode": "OK",
    "statusMessage": "",
    "ipAddress": "175.108.204.0",
    "countryCode": "JP",
    "countryName": "JAPAN",
    "regionName": "TOKYO",
    "cityName": "TOKYO",
    "zipCode": "214-002",
    "latitude": "35.6149",
    "longitude": "139.581",
    "timeZone": "+09:00"
}
下面是一个示例代码(感谢@iveoak提供了良好的模板):

函数getLocFromIP(IP){ //(使用ipinfodb API获取有效JSON响应的js代码) var url='1〕http://api.ipinfodb.com/v3/ip-city/?key=&ip=“+ip+”&format=json&callback=?”; var response=$.getJSON(url);//使用jQuery //(使用JSON.parse解析接收到的JSON响应的js代码) 响应。然后(功能(位置){ 变量信息=“
    ”; 用于(var键入位置){ 信息+='
  • '+key+':'+location[key]+'
  • '; } 信息+='
'; }); //(js代码,以获得您想要的结果) 返回结果; } 如果不使用jQuery,请参阅

示例(使用jQuery):

我发布了另一个答案

这是一个使用jsonp的纯javascript解决方案。基本上,使用
是一个相同的概念

因此,您可以从任何地方进行访问,而不需要直接处理json。您只需获取javascript对象即可

这是我的演示:

更新:

I/F与您想要的稍有不同。它使用回调函数

getLocFromIP(ip, function(result) {
    // use result
});
演示返回:

OK;;175.108.204.0;JP;JAPAN;TOKYO;TOKYO;214-002;35.6149;139.581;+09:00
我希望这个基本的解决方案能让你满意

OK;;175.108.204.0;JP;JAPAN;TOKYO;TOKYO;214-002;35.6149;139.581;+09:00