谈及前端开发,总难免涉及到IP查询问题,有时候你写个简单的 Demo ,都是需要加个IP查询,方能显得逼格。在网上寻找许久,总结几个可用的接口,以及前端调用的简单方法,仅供参考。
友情提示:网上有介绍说 淘宝接口、腾讯接口、有道接口,博主在亲测是无效的。
1、搜狐接口(返回数据不带运营商,部分城市仅返回省份
):
请求URL:https://pv.sohu.com/cityjson?ie=utf-8
数据返回(json):
var returnCitySN = {"cip": "221.213.149.190", "cid": "530100", "cname": "云南省昆明市"};
代码(JavaScript):
<srcipt src="https://pv.sohu.com/cityjson?ie=utf-8"></script>
<script>
// 获取ip地址
// 也可以不定义变量,直接在代码中使用 returnCitySN 数组
var ip = returnCitySN["cip"];
var cname = returnCitySN["cname"];
</script>
2、126(网易) 接口(返回数据 不带IP
):
请求URL:https://ip.ws.126.net/ipquery
数据返回(json):
var lo="云南省", lc="德宏州"; var localAddress={city:"德宏州", province:"云南省"}
代码(JavaScript):
<srcipt src="https://ip.ws.126.net/ipquery"></script>
<script>
// 默认返回没有IP数据
// 可以调用数组,也可以直接使用变量
var cname = localAddress["city"]; // 城市
var pro = lo; // 省份
</script>
3、太平洋接口(返回数据带运营商
):
太平洋接口我在本地测试可以使用(回调函数),但是传到 web 服务器就有跨域问题(未解决)
请求URL:
// 返回 js 回调代码
① http://whois.pconline.com.cn/ipJson.jsp
if(window.IPCallBack) {IPCallBack({"ip":"221.213.149.190","pro":"云南省","proCode":"530000","city":"德宏州","cityCode":"533100","region":"","regionCode":"0","addr":"云南省德宏州 联通","regionNames":"","err":""});}
代码(JavaScript):
// 回调方法
<script>
w.IPCallBack = function IPCallBack (data){
// 假如把 addr 值输出到 控制台
// 当然了,你也可以直接调用相关字段,但是要以 data.xxx 方式调用
console.log(data.addr);
}
</script>
// 调用接口
<srcipt src="http://whois.pconline.com.cn/ipJson.jsp"></script>
// 返回 json 格式数据
此接口我在测试的时候会发生跨域问题(JavaScript)
② https://whois.pconline.com.cn/ipJson.jsp?json=true
{"ip":"221.213.149.190","pro":"云南省","proCode":"530000","city":"德宏州","cityCode":"533100","region":"","regionCode":"0","addr":"云南省德宏州 联通","regionNames":"","err":""}
由于博主近期的 Demo 都是基于JavaScript 做的,所有仅给出 JavaScript 代码案例,至于后端结合使用,其实也差不了多少,你需要的只是一个合适的接口而已。