我想在我的项目中使用wikipedia API来抓取人物的图像,但是失败了。我用这个网址:https://en.wikipedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100
当我的控制台浏览器说下面的
Refused to execute script from 'https://en.wikipedia.org/w/api.php?action=query&prop=pageimages&titles=Albe…Callback&callback=jQuery22409288979864744966_1470068280411&_=1470068280412' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
我的代码
var general = {
// The URL to the quote API
url: 'http://api.forismatic.com/api/1.0/',
// What to display as the author name if s/he's unknown
unknownAuthor: 'Uknown',
// Base URL for the tweet links generation
tweetURL: 'http://twitter.com/home?status=',
wikiURL:'https://en.wikipedia.org/w/api.php?action=query&prop=pageimages&titles=Albert Einstein&pithumbsize=100&callback=wikiCallback'
};
var wikirequest = function() {
$.ajax({
url:general.wikiURL,
dataType: 'jsonp',
success: function(wikData) {
console.log(wikData);
//var image = wikiData.
displayQuote(image);
} // end of success
});
}// wikirequest
wikirequest();
有没有人遇到同样的问题?
答案 0 :(得分:3)
您正在尝试使用JSONP加载数据,但是您正在向返回HTML文档的URL发出请求。 JSONP请求必须用JavaScript程序来回答(因为这是它们工作方式的基本特征......以及为什么它们是危险的,应该避免使用普通的JSON和CORS)。
要使其返回JSONP,您需要提供两个额外的查询字符串参数:
format=json
callback=YourCallbackName
...其中YourCallbackName
是应该执行的函数的名称,并将您作为参数提取的数据传递给它。当您指定callback=?
时,大多数Ajax库将动态生成该名称(以及函数本身)。
答案 1 :(得分:2)
您在URL上缺少& format = json - 该页面显示的是带有html标头的数据,您可能一直在尝试对此进行解码。上面的答案实际上更好。