2016-08-01 3 views
-1

Я хочу использовать API-интерфейс wikipedia в своем проекте, чтобы захватить изображения людей, но терпеть неудачу. Я использую этот адрес: https://en.wikipedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100 Когда я утешать браузер говорит следующееНевозможно выполнить запрос Ajax от wikipedia

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

Кто-нибудь встречался с такой же вопрос?

+0

Что вы вводите в консоль? –

+0

Я отредактировал свой вопрос и ответим вам благодаря btw – NZMAI

+1

Вставьте код и ошибки в 'code blocks' вместо использования изображений. – dlsso

ответ

3

Вы пытаетесь загрузить данные с помощью JSONP, но вы делаете запрос на URL-адрес, который возвращает HTML-документ. Запросы JSONP должны отвечать на JavaScript-программы (поскольку это фундаментальная особенность их работы ... а также почему они опасны и их следует избегать в пользу простых JSON и CORS).

Чтобы сделать его вернуть JSONP вам нужно два дополнительных параметров строки запроса:

  • format=json
  • callback=YourCallbackName

... где YourCallbackName это имя функции, которая должна быть выполнена и передал данные, которые вы извлекаете в качестве аргумента. Большинство библиотек Ajax будут генерировать это имя (и сама функция) динамически, когда вы укажете callback=?.

+0

Спасибо за всесторонний ответ! – NZMAI

+0

Кстати, я хочу получить изображения из этого запроса, проблема заключается в том, что объект предоставляет изображения с разными идентификаторами, поэтому их невозможно получить, поскольку они изменяются в зависимости от имени. Можете ли вы предложить мне выход из этой проблемы? – NZMAI

2

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

Вы пропускаете формат & = JSON на URL - Страница отображения данных с заголовком HTML, и вы бы пытаться расшифровать это. Вышеуказанный ответ на самом деле лучше.

+0

Цените свой полезный ответ! – NZMAI

Смежные вопросы