无法从维基百科执行Ajax请求

时间:2016-08-01 16:08:04

标签: javascript ajax

我想在我的项目中使用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();

Pen

有没有人遇到同样的问题?

2 个答案:

答案 0 :(得分:3)

您正在尝试使用JSONP加载数据,但是您正在向返回HTML文档的URL发出请求。 JSONP请求必须用JavaScript程序来回答(因为这是它们工作方式的基本特征......以及为什么它们是危险的,应该避免使用普通的JSON和CORS)。

要使其返回JSONP,您需要提供两个额外的查询字符串参数:

  • format=json
  • callback=YourCallbackName

...其中YourCallbackName是应该执行的函数的名称,并将您作为参数提取的数据传递给它。当您指定callback=?时,大多数Ajax库将动态生成该名称(以及函数本身)。

答案 1 :(得分:2)

https://en.wikipedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100&format=json

您在URL上缺少& format = json - 该页面显示的是带有html标头的数据,您可能一直在尝试对此进行解码。上面的答案实际上更好。