2010-12-29 5 views
6

APIを使用してJSONとしてスタックオーバーフロープロファイルから情報を取得したいとします。StackOverflow APIを使用したJSONの取得

だから私はこのリンクを使用しますhttp:/api.stackoverflow.com/1.0/users/401025/

しかし、リクエストをすると、JSONデータを含むファイルが取得されます。 Ajaxを使用してそのファイルを処理するにはどうすればよいですか?

<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が空のようです:

は、ここに私のコード(http://jsfiddle.net/hJhfU/2/)です。何か案は?

+7

jQueryを使用します。マニュアルAJAXはあなたのコードを読んでいる人にあなたを嫌ってしまい、あなたは間違いを犯す可能性が高いです。 – ThiefMaster

+0

@ThiefMaster更新された回答が表示されたら、あなたは笑ってしまいます。 –

答えて

8

注:Ajaxを使用して別のドメインにアクセスすることはできません。 (これはsame-domain policyと呼ばれている。)

はしかし、StackOverflowのAPIはので、ここで、JSONPコールバックをサポートするソリューションです:<script>タグによるスクリプトで

ロード。

まさにそれを行う関数を作成します:

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

負荷それ:

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 
} 

は、コールバック関数を設定します!

load_script('http://api.stackoverflow.com/1.0/users/401025/?jsonp=soResponse'); 
+0

okですが、これを実行すると何もしません。http://jsfiddle.net/hJhfU/2/ –

+0

@ArtWorkADまず、AjaxはjsFiddleでは動作しません。第二に、私の更新された答えを見てください。 –

+0

それはreq.responseTextが空であるようです –

関連する問題