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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
jQuery 创建Dom元素
May 07 Javascript
JavaScript 图像动画的小demo
May 23 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
vue 移动端适配方案详解
Nov 15 Javascript
优雅的使用javascript递归画一棵结构树示例代码
Sep 22 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
Openlayers3实现车辆轨迹回放功能
Sep 29 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新手用的Insert和Update语句构造类
2012/03/31 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python实现随机梯度下降法
2020/03/24 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
美容院经理岗位职责
2014/04/03 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
Redis基本数据类型Set常用操作命令
2022/06/01 Redis