2010-12-29 16 views
6

ile JSON alın. JSON API kullanarak olarak benim yığın taşması profilinden bilgi almak isteyen StackOverflow API

Yani bu bağlantıyı http:/api.stackoverflow.com/1.0/users/401025/ kullanınız. Ben istek yaptığınızda

Ama JSON verilerini içeren bir dosya olsun. Ajax kullanarak bu dosya ile nasıl başa çıkabilirim?

<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> 

uyarı ateş asla ve req.responseText boş görünüyor:

İşte benim kodu (http://jsfiddle.net/hJhfU/2/) 'dir. Herhangi bir fikir?

+7

Kullanım jQuery. Manuel AJAX, kodunuzu okuyan kişilerin sizi senden nefret etmesine neden olur ve hata yapmanız olasıdır. – ThiefMaster

+0

@ThiefMaster Güncellenmiş yanıtımı gördüğünüzde güleceksiniz. –

cevap

8

Not: başka etki alanına erişmek için Ajax kullanamazsınız. (Bu same-domain policy denir.)

Ancak StackOverflow API, işte JSONP geri aramalar destekleyen bir çözümdür: Bir <script> etiketi aracılığıyla komut

Yük.

yok sadece bir işlev oluşturun:

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

yükleyin o:

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 
} 

geri arama işlevi ayarlama!

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

Tamam, ama bu çalıştırdığınızda bir şey, http://jsfiddle.net/hJhfU/2/ –

+0

@ArtWorkAD Her şeyden önce Ajax jsFiddle çalışmaz do doent. İkincisi, güncellenmiş cevabımı görün. –

+0

Req.responseText'in boş olduğu anlaşılıyor –