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 sortable效果 代码有错但值得看看
Nov 05 Javascript
javascript中使用css需要注意的地方小结
Sep 01 Javascript
javascript实现yield的方法
Nov 06 Javascript
Node.js插件的正确编写方式
Aug 03 Javascript
js鼠标点击图片实现随机变换图片的方法
Feb 16 Javascript
浅析node连接数据库(express+mysql)
Nov 30 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
基于原生js淡入淡出函数封装(兼容IE)
Oct 20 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
Nov 01 Javascript
微信小程序module.exports模块化操作实例浅析
Dec 20 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
jQuery treeview树形结构应用
Mar 24 jQuery
弹出窗口并且此窗口带有半透明的遮罩层效果
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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
javascript控制swfObject应用介绍
2012/11/29 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
浅谈Vue的响应式原理
2019/05/30 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python人民币小写转大写辅助工具
2018/06/20 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Django异步任务线程池实现原理
2019/12/17 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
python中os.remove()用法及注意事项
2021/01/31 Python
如何进行Linux分区优化
2013/02/12 面试题
工商企业管理应届生求职信
2013/11/03 职场文书
家长给小学生的评语
2014/01/30 职场文书
物控部经理职务说明书
2014/02/25 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
师德师风整改措施
2014/10/24 职场文书
mysql函数全面总结
2021/11/11 MySQL
MySQL数据库 任意ip连接方法
2022/05/20 MySQL