我在学校学习C ++后自学JavaScript,我认为尝试构建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)。对网络开发不太熟悉,我不太清楚从哪里开始研究如何解决这个问题。
网址返回(我相信)一个JSON,但它以额外的?(,以结尾)开头。
感谢您的帮助!
修改
这是我拍摄的错误的屏幕截图。看来红色突出显示的文本来自jQuery。也许我传入的URL无法由$ .getJSON()处理?
编辑2:
我按照 meda 的建议将以下内容添加到我的清单中,但错误仍然存在:
"permissions": [
"http://api.openweathermap.org/*"
]
答案 0 :(得分:2)
URL包括osql -E -S ComputerName\InstanceName -Q "SELECT * FROM Northwind.dbo.Shippers" -o MyOutput.rpt
这是JSONP的常见模式,支持它的API会将JSON包装在一个简单的JavaScript函数中。响应数据被传递给JS函数并避免浏览器XHR限制。只需从API网址中删除callback=?
,您就可以了。
答案 1 :(得分:0)
不是JSON无效,它是出于安全目的限制Chrome应用。
您需要授予您的应用加载外部url
。
这是在清单文件
中完成的"permissions": [
"http://api.openweathermap.org/*"
]