6

APIを使用してStackOverflowプロファイルから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空のようです。何か案は?

4

3 に答える 3

8

注:Ajaxを使用して別のドメインにアクセスすることはできません。(これは同一ドメインポリシーと呼ばれます。)

ただし、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');
于 2010-12-29T11:35:05.920 に答える
0

新しいAPIがあります(USER_IDを置き換えます)

https://api.stackexchange.com/2.2/users/[USER_ID]?&site=stackoverflow
于 2020-04-18T16:02:11.227 に答える
0

将来の読者のために:

oAuthとライブラリ全体を使用せずにレピュテーションを取得したかったのです。Sebastien Horinの回答のおかげで、私は簡単に次を使用できました。

function get_reputation() {
    const xhttp = new XMLHttpRequest();
    const url = 'https://api.stackexchange.com/2.3/users/USER_ID?&site=stackoverflow';

    xhttp.open( "GET", url );
    xhttp.send();

    xhttp.onreadystatechange = function() {

        if(xhttp.readyState == 4 && xhttp.status == 200) {
            
            var json = JSON.parse(xhttp.responseText);
            
            console.debug( json );
            
        }       
    }
}

get_reputation();

:これはAPIv2.3を使用します。

于 2022-02-25T10:45:22.327 に答える