2010-12-29 38 views
6

Tôi muốn truy xuất thông tin từ tiểu sử Stack Overflow của mình dưới dạng JSON bằng API.Truy xuất JSON bằng API StackOverflow

Vì vậy, tôi sử dụng liên kết này http:/api.stackoverflow.com/1.0/users/401025/.

Nhưng khi tôi đưa ra yêu cầu, tôi nhận được tệp chứa dữ liệu JSON. Làm cách nào để xử lý tệp đó bằng Ajax?

Đây là mã của tôi (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> 

Cảnh báo không bao giờ bị sa thải và req.responseText có vẻ trống không. Bất kỳ ý tưởng?

+7

Sử dụng jQuery. Hướng dẫn sử dụng AJAX làm cho mọi người đọc mã của bạn ghét bạn và bạn có thể mắc lỗi. – ThiefMaster

+0

@ThiefMaster Bạn sẽ cười khi bạn nhìn thấy câu trả lời cập nhật của mình. –

Trả lời

8

Lưu ý: Bạn không thể sử dụng Ajax để truy cập miền khác. (Điều này được gọi là same-domain policy.)

Tuy nhiên, API StackOverflow hỗ trợ callbacks JSONP, vì vậy đây là một giải pháp:

tải trong kịch bản qua thẻ <script>.

Tạo một chức năng nà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 
} 

Thiết lập các chức năng gọi lại:

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

tải nó!

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

ok, nhưng khi tôi chạy nó doen't làm bất cứ điều gì, http://jsfiddle.net/hJhfU/2/ –

+0

@ArtWorkAD Trước hết, Ajax không hoạt động trên jsFiddle. Thứ hai, hãy xem câu trả lời cập nhật của tôi. –

+0

Có vẻ như req.responseText trống rỗng –

Các vấn đề liên quan