Получить JSON с помощью API StackOverflow - PullRequest
6 голосов
/ 29 декабря 2010

Я хочу получить информацию из моего профиля переполнения стека в виде 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 кажется пустым. Есть идеи?

1 Ответ

8 голосов
/ 29 декабря 2010

Примечание: Вы не можете использовать 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');
...