0


0

単にjQuery $ .getのtwitterへの呼び出しが失敗する

私はTwitterから公開tmelineを読んで、AJAXの最初のビットを書き込もうとしています。

私は次のコードのビットを持っています:

Javascript Twitter client




Blank text

and

/* twitter.js */
TwitterURL = 'http://twitter.com/statuses/public_timeline.xml';

$(document).ready(function() {
  $.get(TwitterURL, function(data, textStatus) {
       $('#twitter').empty().text(textStatus);
      }
    );
  }
)

実際に実行しようとすると、textStatusが「success」になりますが、データを取得していないようです。

Firebugでは、XMLデコードウィンドウに「XML解析エラー:要素が見つかりません場所:moz-nullprincipal:\ {82e4c9e5-0335-4fd8-b295-bfb8e10a6b18}行番号1、列1:」が表示されます。

curlを使用してURLをダウンロードすると、予期したXMLが取得されます。

私はここで何をしていますか?

追加するために編集:

私は実際にtwitterからデータを取得しているようで、HTTPリクエストには約5.5秒かかり、firebugはコンソールに次のように表示します。 問題の原因が同じ起源のポリシーである場合、まったく異なるディスプレイが期待されます。

リクエストヘッダー:

Host: twitter.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.04 (jaunty) Shiretoko/3.5.7
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: null

HTTP応答ヘッダー:

Date: Wed, 17 Feb 2010 22:49:32 GMT
Server: hi
X-RateLimit-Limit: 150
X-Transaction:  1266446972-35253-14922
Status: 200 OK
Etag: "4f77a9ba7d3794163fbe9561e4e829f4"-gzip
Last-Modified: Wed, 17 Feb 2010 22:49:32 GMT
X-RateLimit-Remaining: 149
X-Runtime: 0.23618
Content-Type: application/xml; charset=utf-8
Pragma: no-cache
X-RateLimit-Class: api
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Expires: Tue, 31 Mar 1981 05:00:00 GMT
X-Revision: DEV
X-RateLimit-Reset: 1266450572
Set-Cookie: _twitter_sess=BAh7CDoRdHJhbnNfcHJvbXB0MDoHaWQiJWNlODVlYTQwNWQ0NWIxM2UzODNm%250AN2FhYzBhY2JkZGNlIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFz%250AaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--e866ff422f342146a298acbce26872cf6c04b7e8; domain=.twitter.com; path=/
Vary: Accept-Encoding
Content-Encoding: gzip
Connection: close
Transfer-Encoding: chunked

3 Answer


2


Same 起源ポリシー、私は推測します。

Hmm. 実際にデータを取得しているのに、Firefoxがデータを適切に解析していない場合…​ (http://twitter.com/statuses/public_timeline.jsonをリクエストして)XMLではなくJSONでこれを実行しようとしましたか? または、XMLを返すことを期待するjQueryに指定します( " xml "`の3番目の引数をhttp://api.jquery.com/jQuery.get/ [`jQuery.get()]に渡しますか?


2


以下のコードを使用して問題を解決する必要があります。

/* Twitter.js - Code gets and displays the latest tweet from Twitter */
twitterURL = 'http://twitter.com/statuses/public_timeline.json';
$(document).ready(function() {
  $.get(twitterURL, function(json) {
    $('#twitter').empty().text(json[0].text); // Subscript k of json object between 0 and 19 (inclusive)
  }, 'jsonp');
});

しかし、XMLに対するGETリクエストが機能しない理由はまだわかりません。


1


JSONPをチェックしてくださいhttp://jquery-howto.blogspot.com/2009/04/twitter-jsonjsonp-api-url.html

あなたのブログにあなたのwteetsを表示したいだけなら、例えばhttp://twitter.com/goodies/widgetsを使用できます