【笔记】通过jsonp方式获取用户ip地址

此处用到第三方接口,有可能以后会失效:http://pv.sohu.com/cityjson

 

方式一:用ajax(不在第三方接口的白名单内,会跨域)

$.ajax({
    type: "GET",
    url: 'https://pv.sohu.com/cityjson',
    cache: false,
    async: false,
    dataType: "json",
    success: function (res) {
        alert(res);
    },
    error: function () {
        alert("请检查网络或稍后重试");
    }
})

得到的结果就是显示跨域

方式二:利用jsonp的方式(即通过创建script标签来实现)

先尝试一下这个接口直接通过浏览器url请求得到的结果内容是什么,如图可以知道该接口返回的是一个 returnCitySN 变量,直接通过script引入的话,就相当于一个全局变量

那就在我们脚本文件里面加入以下代码即可

var new_js = document.createElement("script");
try {
    document.body.appendChild(new_js);
    new_js.src = 'http://pv.sohu.com/cityjson';
} catch (err) {
    console.log("创建script标签失败");
}

// 监听script标签加载完毕
new_js.onload = new_js.onreadystatechange = function () {
    if (!this.readyState //这是FF的判断语句,因为ff下没有readyState这个值,IE的readyState肯定有值
        || this.readyState == 'loaded' || this.readyState == 'complete' // 这是IE的判断语句
    ) {
        console.log("ip地址:", returnCitySN);
        document.body.removeChild(new_js);
    }
};

最终得到的结果就是

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值