Получить JSON с помощью StackOverflow API

Я хочу получить информацию из моего профиля Stack Overflow в формате JSON с помощью API.

Поэтому я использую эту ссылку http:/api.stackoverflow.com/1.0/users/401025 /.

Но когда я делаю запрос, я получаю файл, содержащий данные JSON. Как мне работать с этим файлом с помощью Ajax?

Вот мой код (http://jsfiddle.net/hJhfU/2/):

<html>
 <head>
  <script>
   var req;

   getReputation();

   function getReputation(){
      req = new XMLHttpRequest();
      req.open('GET', 'http://api.stackoverflow.com/1.0/users/401025/');
      req.onreadystatechange = processUser;
      req.send();
   }

   function processUser(){       
       var res = JSON.parse(req.responseText);
       alert('test');      
   }
  </script>
 </head>

Предупреждение никогда не срабатывает, и req.responseText кажется пустым. Есть идеи?


person Upvote    schedule 29.12.2010    source источник
comment
Используйте jQuery. Ручной AJAX заставляет людей, читающих ваш код, ненавидеть вас, и вы, вероятно, будете делать ошибки.   -  person ThiefMaster    schedule 29.12.2010
comment
@ThiefMaster Вы будете смеяться, когда увидите мой обновленный ответ.   -  person Jacob Relkin    schedule 29.12.2010


Ответы (2)


Примечание. Вы не можете использовать Ajax для доступа к другому домену. (Это называется политикой одного домена.)< /сильный>

Однако API StackOverflow поддерживает обратные вызовы JSONP, поэтому вот решение:

Загрузить скрипт с помощью тега <script>.

Создайте функцию, которая делает именно это:

function load_script(src) {
   var scrip = document.createElement('script');
   scrip.src = src;
   document.getElementsByTagName('head')[0].appendChild(scrip);
   return scrip; //just for the heck of it
}

Настройте функцию обратного вызова:

function soResponse(obj) {
   alert(obj.users[0].reputation);
}

Загрузите его!

load_script('http://api.stackoverflow.com/1.0/users/401025/?jsonp=soResponse');
person Jacob Relkin    schedule 29.12.2010
comment
@ArtWorkAD Во-первых, Ajax не работает с jsFiddle. Во-вторых, см. мой обновленный ответ. - person Jacob Relkin; 29.12.2010
comment
Кажется, что req.responseText пуст - person Upvote; 29.12.2010
comment
что это значит для меня? Означает ли это, что я не могу получить доступ к своему профилю пользователя с помощью ajax? - person Upvote; 29.12.2010
comment
@ArtWorkAD Да, это то, что это значит. - person Jacob Relkin; 29.12.2010
comment
@ArtWorkAD Смотрите мой обновленный ответ, я думаю, что решил эту проблему, детка! :) - person Jacob Relkin; 29.12.2010
comment
получение проблемы CORB - person Bhaskararao Gummidi; 11.11.2019

есть новый API (заменить USER_ID)

https://api.stackexchange.com/2.2/users/[USER_ID]?&site=stackoverflow
person Sebastien Horin    schedule 18.04.2020