使用ipify与geoplugin API通过IP获取国家码遇JSON问题求助
解决geoplugin JSON请求失败的问题
先揪出你代码里的核心问题:URL参数拼接格式错误。你在拼接geoplugin的请求地址时,把jsoncallback=?直接连在了IP后面,漏掉了参数分隔符&,导致服务器无法识别正确的请求参数,自然返回不了可用的JSONP数据。
修正后的代码
$.getJSON('https://api.ipify.org/?format=json', function(r){ alert(r.ip); $.getJSON('http://www.geoplugin.net/json.gp?ip=' + r.ip + '&jsoncallback=?', function(y) { alert(y.geoplugin_countryCode); }); });
关键修正说明
- 在
r.ip和jsoncallback=?之间补上了&,让URL参数格式合规:?ip=XXX&jsoncallback=? - 额外提醒:如果你的页面是HTTPS协议,建议把geoplugin的URL改成
https://www.geoplugin.net/json.gp,避免浏览器拦截混合内容的请求
排查小技巧
如果修正后还是有问题,按F12打开浏览器开发者工具,切换到「网络」标签页,查看geoplugin请求的返回内容——比如是否存在跨域限制、API访问频次超限等,这些信息能帮你更快定位剩余问题。
内容的提问来源于stack exchange,提问作者Krzysztof Wurst
相关产品推荐
相关产品推荐

