Node.js和PHP根据ip获取地理位置的方法


Posted in Javascript onMarch 14, 2014

一、Node.js实现代码

var http = require('http');
var util = require('util');/**
 * 根据 ip 获取获取地址信息
 */
var getIpInfo = function(ip, cb) {
    var sina_server = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=';
    var url = sina_server + ip;
    http.get(url, function(res) {
        var code = res.statusCode;
        if (code == 200) {
            res.on('data', function(data) {
                try {
                    cb(null, JSON.parse(data));
                } catch (err) {
                    cb(err);
                }
            });
        } else {
            cb({ code: code });
        }
    }).on('error', function(e) { cb(e); });
};
getIpInfo('220.181.111.85', function(err, msg) {
    console.log('城市: ' + msg.city);
    console.log('msg: ' + util.inspect(msg, true, 8));
})

请求结果:
城市: 徐州
{
    "ret": 1,
    "start": "49.68.0.0",
    "end": "49.68.255.255",
    "country": "中国",
    "province": "江苏",
    "city": "徐州",
    "district": "",
    "isp": "电信",
    "type": "",
    "desc": ""
}

二、PHP实现代码
<?$ip = "220.181.111.85";
$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip";
$data = file_get_contents($url);
$result = json_decode($data);
echo "城市:" . $result->city . "<br>";
print_r($result);
?>

请求结果:
城市:徐州
stdClass Object
(
    [ret] => 1
    [start] => 49.68.0.0
    [end] => 49.68.255.255
    [country] => 中国
    [province] => 江苏
    [city] => 徐州
    [district] => 
    [isp] => 电信
    [type] => 
    [desc] =>
)

Javascript 相关文章推荐
jQuery 操作XML入门
Dec 25 Javascript
使用js获取QueryString的方法小结
Feb 28 Javascript
很棒的学习jQuery的12个网站推荐
Apr 28 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
Sep 23 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 #Javascript
javascript回车完美实现tab切换功能
Mar 13 #Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
Mar 13 #Javascript
JQuery中extend使用介绍
Mar 13 #Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 #Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 #Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 #Javascript
You might like
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php猜单词游戏
2015/09/29 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
DOM 高级编程
2015/05/06 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
实例浅析js的this
2016/12/11 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
python生成带有表格的图片实例
2019/02/03 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
python内打印变量之%和f的实例
2020/02/19 Python
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
销售会议开幕词
2015/01/28 职场文书
毕业生自荐信范文
2015/03/05 职场文书
2015年老干部工作总结
2015/04/23 职场文书
2015公司年度工作总结
2015/05/14 职场文书
民事起诉状范文
2015/05/19 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript