2016-02-22 3 views
2

Этот запрос API не получает ничего, кроме кода состояния '0', и я не могу понять, что с ним не так. Консоль.log в браузере читает «Ответ на предполетный период недействителен (перенаправление)», но если я просто добавлю URL-адрес веб-сайта в свой браузер, я могу получить к нему доступ. Должно быть что-то не так с тем, как я делаю свой запрос, но я не могу понять это. Вот код.API предпросмотра Wikipedia недопустим

var authKey = "http://en.wikipedia.org/w/api.php?action=centralauthtoken&format=json"; 
 
    
 
    var xhr = new XMLHttpRequest(); 
 
    
 
    xhr.open("GET", authKey, true); 
 
    xhr.setRequestHeader('Api-User-Agent', 'http://s.codepen.io'); 
 
    xhr.send();  
 
    var xmlDocument = xhr.response; 
 
    console.log(xhr.status); 
 
    console.log(xhr.statusText);

Я также изменил «HTTP» на «HTTPS», но я все еще получаю «0» только на этот раз на консоли вы видите «Ответ на предполетной запрос не проверка доступа к пропускному контролю: в запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Следовательно, исходный «http://s.codepen.io» не имеет доступа ».

Я не уверен, что это синтаксис, как я структурировал запрос или что, но через два дня попробовать разные решения в stackoverflow и google я до сих пор не получил нигде. Если кто-то хочет видеть фактический сайт, у меня возникают трудности с его здесь http://codepen.io/Ramins01/pen/rxExKw

+0

Планируете ли вы нуждаться в centralauth фишку? Это необходимо, только если вы планируете что-то сделать с API, требующим аутентификации (например, редактирования). – slaporte

ответ

2

XMLHttpRequest ограничен same-origin policy. Есть, однако, few different ways, чтобы получить данные из другого домена. В этом случае проще всего использовать JSONP with jQuery. API Википедии поддерживает JSONP.

Вот пример Wikipedia opensearch query с JSONP: http://codepen.io/slaporte/pen/ZQgjQj

var search_term = 'Coffee'; 
var api_url = "https://en.wikipedia.org/w/api.php"; 

$.ajax({url: api_url, 
     dataType: 'jsonp', 
     jsonp: 'callback', 
     data: {action: 'opensearch', 
       search: search_term, 
       limit: 5, 
       format: 'json'}, 
     success: function(response) { 

      // Now you have search results! 
      console.log(response); 

     } 
}); 
Смежные вопросы