2012-11-29 75 views
3

我想從twitter獲取json數據。 http://api.twitter.com/1/statuses/public_timeline.json 這是我的代碼無法加載jQuery數據在jquery

<html> 
<head> 
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script> 
    <script> 
     $(document).ready(function(){ 

      $("button").click(function(){ 
       $.getJSON("http://api.twitter.com/1/statuses/public_timeline.json",function(result){ 
        $.each(result, function(i, field){ 
         $("div").append(field + " "); 
        }); 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 

<button>Get JSON data</button> 
<div></div> 

</body> 
</html> 

它是從http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_getjson ,但它不工作!

+0

用於HTTP的另一個問題提供了新的JSON網址取代Twitter的API網址:// w3fools.com/ –

+0

W3schools代碼示例是錯誤的!?令人震驚!看起來像Twitter的URL返回404。 –

+1

您請求的URL返回錯誤,我想你應該添加一些參數。嘗試這一個,如果它工作改變參數。 https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=twitterapi –

回答

1

您正在使用JavaScript中的same origin policy。這基本上說,你不能訪問來自不同域的資源(在你的情況下,其他域將是twitter.com)。

一個解決方案是使用JSONP。該推特API supports this。你可以在你的情況下,這樣的運行與jQuery一個JSONP請求:

$.ajax({ 
    url: "http://api.twitter.com/1/statuses/public_timeline.json", 
    cache: false, 
    dataType: 'jsonp', 
    success: function(result){ 
    $.each(result, function(i, field){ 
         $("div").append(field + " "); 
        }); 
    } 
}); 

此外,W3Schools的是信息不可靠的來源。最好使用類似Mozilla Developer Network的東西。

0

查看您正在嘗試加載的json文檔。

{"errors":[{"message":"Sorry, that page does not exist","code":34}]} 

我會嘗試用工作API調用替換URL嘰嘰喳喳你擔心代碼段是否在工作之前:當我試圖訪問它返回以下錯誤。 :)

0

由於Cross-Origin資源共享,您試圖從其他域獲取文檔,並且請求的URL阻止了您的請求。你可以在這裏閱讀:http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

你可以使用JSONP與jQuery,它應該允許你完成請求,但是你要求的那個頁面會得到一個404錯誤,所以你可以對結果做的事情沒有太多。

+0

我將網址更改爲https://api.twitter.com/1/statuses/user_timeline.json?include_entities = true&include_rts = true&screen_name = twitterapi 我進入屏幕[object Object] [object Object] ..... –

0

可以從其他域使用$就()的jquery方法。見下面

$.ajax({ 

    url : " // twitter api url", 
    dataType : "JSON", 
    cache : false, 
    success : function(success) 
    { 
    $.each(success, function(index,value) {$("div").append(value + ""); }) 
    } 

    error : function() { //Statements for handling ajax errors } 

    }); 

您使用在AJAX請求URL中的代碼示例返回一個JSON數組,它包含一個訪問JSON數據錯誤

{"errors": [{"message": "The Twitter REST API v1 is no longer active. Please  
migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", "code": 68}]} 

您需要遷移到API v1.1的過程之前的要求,與在API v1.1的