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 相关文章推荐
利用javascript查看html源文件
Nov 08 Javascript
js以对象为索引的关联数组
Jul 04 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
May 25 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
基于BootStarp的Dailog
Apr 28 Javascript
浅谈JavaScript的闭包函数
Dec 08 Javascript
如何理解Vue的render函数的具体用法
Aug 30 Javascript
vue左右侧联动滚动的实现代码
Jun 06 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
弹出窗口并且此窗口带有半透明的遮罩层效果
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中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
解密效果
2006/06/23 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
ES6 Generator基本使用方法示例
2020/06/06 Javascript
Python简单遍历字典及删除元素的方法
2016/09/18 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
4s店总经理岗位职责
2013/12/31 职场文书
大学生作弊检讨书
2014/02/19 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
儿童生日会策划方案
2014/05/15 职场文书
旅游活动总结
2014/08/27 职场文书
财产保全担保书
2015/01/20 职场文书
检讨书模板
2015/01/29 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript