【问题标题】:Why can i not see the json response when it returns 200 ok为什么我在返回 200 ok 时看不到 json 响应
【发布时间】:2013-04-04 19:51:47
【问题描述】:

我正在发出一个有效的 json 请求,但是在使用时我无法在日志中看到响应:

console.log(data);

第一个请求有效,但第二个无效。

谢谢

【问题讨论】:

  • 关于这部分。 Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.你可能用的是谷歌浏览器。
  • 这是什么意思我认为 json 响应被压缩了?
  • 您在另一个域上,而不是请求数据。您需要使用.ajax()。就像他们在这里所说的那样:stackoverflow.com/questions/2765411/…

标签: jquery ajax json getjson


【解决方案1】:

http://maps.googleapis.com 支持CORS,但https://api.forecast.io 不支持。对于 forecast.io,您应该使用 JSONP,在 jQuery 中最简单的方法是在请求 URL 中添加 "?callback=?"

$.getJSON('https://api.forecast.io/forecast/<API KEY>/' + lat + ',' + lon + "?callback=?", function(data1) {
            console.log(data1.currently.summary);
        });

但是,您应该避免暴露您的 api 密钥,如 forecast.io api docs 中所述。为该服务创建反向代理可能是个好主意。

【讨论】:

  • 我现在已经重置了 api 密钥,所以这将不再适用于现有的 fiddles 感谢您的帮助
  • @JamesRand 这不仅仅是关于小提琴。如果你直接使用 JSONP 到 forecast.io,你必须在你的 JS 源中的某个地方有 API 密钥;有人可能会获取该 API 密钥并滥用它。如果您可以访问应用程序的服务器端(如果有),您应该创建一个服务,该服务将充当将 API 密钥添加到您的 forecast.io 请求的代理。
  • 啊好吧这只是一个个人项目所以应该没问题我想我只需要重置 api 密钥来保护预测 io 上的帐户
猜你喜欢
  • 2013-03-08
  • 2011-10-27
  • 2018-02-18
  • 2021-04-23
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
相关资源
最近更新 更多