使用StackOverflow API检索JSON

时间:2010-12-29 11:31:07

标签: javascript ajax stackexchange-api

我想使用API​​从我的Stack Overflow配置文件中检索信息为JSON。

所以我使用此链接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似乎是空的。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

注意:您无法使用Ajax访问其他域。 (这称为same-domain policy。)

但是,StackOverflow API支持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');

答案 1 :(得分:0)

有一个新的API(替换USER_ID)

https://api.stackexchange.com/2.2/users/[USER_ID]?&site=stackoverflow