Javascript getJSON函数仅从本地主机上的url获取数据

Javascript getJSON函数仅从本地主机上的url获取数据,javascript,jquery,api,getjson,Javascript,Jquery,Api,Getjson,我使用下面的函数从api中获取代码,该api在本地主机上运行良好,但在实时环境(即网站)中失败 $.getJSON('//www.geoplugin.net/json.gp?jsoncallback=?', function (data) { // console.log(JSON.stringify(data, null, 2)); console.log(JSON.stringify(data.geoplugin_continentCode)); }); 我在控制台中看到的警告是

我使用下面的函数从api中获取代码,该api在本地主机上运行良好,但在实时环境(即网站)中失败

$.getJSON('//www.geoplugin.net/json.gp?jsoncallback=?', function (data) {
  // console.log(JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data.geoplugin_continentCode));
});
我在控制台中看到的警告是

加载具有源的的的失败 “”

我不知道为什么它在网站上失败了

SSL版本可能会出现一些问题,因为我不确定,因为我在fiddle上尝试了它&它工作正常

更新

因为问题是由于跨域问题造成的,因为此api使用了不同的ssl版本url。我不能使用这个ssl版本,因为它不是免费的

因此,最终使用了另一个api,该api的免费选项也限制为每月5万个请求

$.ajax({
                url: 'https://api.ipgeolocation.io/ipgeo?fields=is_eu& excludes=ip&apiKey=YOURKEY',
                dataType: 'json',
                success: function (json) {
                    console.log("json.is_eu " + json.is_eu);
                }
            });
整个问题是什么? 您想访问第三个站点(
跨域
)。
因此,该站点决定您是否可以访问它。当一个站点提供一项服务(类似于您使用过的
geo
服务)时,它会确定其服务的哪个部分是免费的

在您的情况下,如果源站点的协议是
http
(如
localhost
),而dest站点(服务提供商站点)也是
http
,则您可以使用上述代码访问此地理服务(因为第三个站点现在允许这样做)。但是,如果您想从
https
站点访问此服务(我想您现在正在尝试),则
geoPlugin
不允许您轻松或免费访问

在这种情况下,目标站点提供另一个
url
s并定义用户级别(为特殊服务赚钱)

在act中,如果您的dest站点也是为您自己而设(本例中不是这样),您可以添加对特定referer站点所需的访问权限,但现在

我查看了它的网站以确定。在这种情况下,您必须使用此url:

但这并不是全部!在上面的url中,
k
是什么?本网站: “对于SSL访问,需要API密钥来抵消证书价格和每年12欧元的费用。”


我不知道,但如果您需要它,您应该搜索免费插件(如果存在)或购买它。

乍看之下,我在example.com中找不到这段代码。如果您忘记添加,那么您应该将此代码添加到您的网站。您是否正在运行一个广告拦截器,该拦截器对
localhost
有例外,但对您的实时网站没有例外?我的代码正是示例1中显示的代码,黄色是控制台窗口中显示的警告。我也没有广告拦截器。从url中删除
?jsoncallback=?
后,它现在向我发出跨浏览器警告
跨源请求被阻止:同一源策略不允许在https://www.geoplugin.net/json.gp. (原因:CORS请求未成功)
为什么要删除
jsoncallback
?以查看它是否工作或生成不同的错误?谢谢,我后来在调查时也发现了这一点,警告是由于跨域问题。不幸的是,ssl版本不是免费的。所以最终使用了不同的API,支持每月5万次的免费ssl请求。我也会把这一点加到我的问题上。。我会给你的解决方案打上正确的标记,因为它解决了问题。欢迎你:)我很高兴问题解决了。谢谢你在原来的帖子中介绍这项服务。