2016-05-19 3 views
0
fetch('https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json') 
    .then( 
     function(response) { 
      if (response.status !== 200) { 
       console.log('Looks like there was a problem. Status Code: ' + response.status); 
       return; 
      } 

      // Examine the text in the response 
      response.json().then(function(data) { 
       console.log(data); 
      }); 
     } 
    ) 
    .catch(function(err) { 
     document.write('Fetch Error :-S', err); 
    }); 

Адрес выборки, который я использую, приведен ниже: https://www.mediawiki.org/wiki/API:Main_page по простой выборке. В настоящее время он улавливает ошибку внизу TypeError: NetworkError when attempting to fetch resource. До сих пор мне не удалось получить доступ к каким-либо данным из API после того, как попробовали разные вещи с помощью fetch()fetch() с API Википедии приводит к «TypeError: NetworkError при попытке получить ресурс».

Любая помощь будет оценена!

Проект на codepen здесь: http://codepen.io/javascriptisscary/pen/RazKWB

+0

Если вы открываете консоль при запуске запроса, вы увидите фактическую сетевую ошибку, регистрируемую вашим браузером. Это связано с CORS, а не с вашим кодом. – RickyTomatoes

+1

Попробуйте следующее: https://www.mediawiki.org/wiki/Special:MyLanguage/API:Cross-site_requests – danronmoon

+0

@RickyTomatoes Спасибо за этот совет! Я чувствую себя глупо, я забыл открыть свою собственную консоль вне codepen. – kennyg

ответ

2

Проблема обусловлена ​​fetch() с использованием CORS. Однако, когда я изменил mode: "no-cors" я больше не заблокирован по запросу Перекрестная происхождения, но данный код состояния 0.

Согласно этой документации от Google: https://developers.google.com/web/updates/2015/03/introduction-to-fetch?hl=en

"Нет-Корс» предназначен для делать запросы к другим происхождения, которые не имеют заголовков CORS и приводят к непрозрачным ответ , но как уже говорилось, это не представляется возможным в окне глобального масштаба на данный момент. "

так в настоящее время, чтобы получить доступ к Википедии апи , нужно использовать другой способ, чем fetch()

+0

"non-cors" ain Правильно. Это «no-cors», и я думаю, что это по умолчанию ... –

+0

@RonRoyston Исправлена ​​ошибка типа выше, спасибо – kennyg

+1

Вы сказали, что исправлено: «Когда я перешел в режим:« no-cors ». Как именно вы это сделали, чтобы решить это? Я ничего не вижу о «режиме» в вашем вопросе или в другом месте. – HoldOffHunger