在学校学习了JavaScript之后,我正在自学C++,我认为尝试构建一个Chrome扩展是一个很好的实践。我正在尝试访问OpenWeatherMap的API以获取城市ID来进行天气搜索。
下面是导致问题的代码的一部分:
var cityParam = $('#cityInput').val(); //ex. of cityParam = "New York"
var cityURL = "http://api.openweathermap.org/data/2.5/find?callback=?&q="+ cityParam + "&type=like&sort=population&cnt=30";
var cityJSON;
$.getJSON(cityURL, function(data) {
cityJSON = data;
}我从Chrome收到的错误是:
Refused to load the script [url] ... because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:".我做了谷歌搜索,似乎Chrome扩展在你能做和不能做的事情上非常严格(例如:无法内联javascript)。由于不太熟悉web开发,我不太确定从哪里开始研究如何解决这个问题。
URL返回(我相信)一个JSON,但它以额外的?(,以结束)开头。
谢谢你的帮助!
编辑:
这是我犯的错误的截图。红色高亮显示的文本似乎来自jQuery。也许我传递的URL不能由$.getJSON()处理?

编辑2:
我按照meda的建议在清单中添加了以下内容,但错误仍然存在:
"permissions": [
"http://api.openweathermap.org/*"
]发布于 2015-07-21 01:18:16
URL包括callback=? --这是JSONP的一个常见模式,支持它的API将JSON包装成一个简单的JavaScript函数。响应数据被传递给JS函数,并避免浏览器XHR限制。只需从API中删除callback=?,就可以了。
https://stackoverflow.com/questions/31527235
复制相似问题