Просто вызов jQuery $ .get в твиттер не удался - PullRequest
0 голосов
/ 18 февраля 2010

Я пытаюсь написать свой первый бит AJAX, читая общедоступную tmeline из Twitter.

У меня есть следующие биты кода:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Javascript Twitter client</title>
<script src="library/jquery-1.4.1.js" type="text/javascript"></script>
<script src="twitter.js" type="text/javascript"></script> 
</head>
<body>
<div id="twitter"><p>Blank text</p>
</div>
</body>
</html>

и

/* 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: элемент не найден Расположение: moz-nullprincipal: {82e4c9e5-0335-4fd8-b295-bfb8e10a6b18} Строка № 1, столбец 1:» в окне декодирования XML.

Если я использую curl для загрузки URL-адреса, я получаю ожидаемый XML-код.

Что я здесь не так делаю?

Отредактировано, чтобы добавить:

Похоже, что я на самом деле получаю данные из твиттера, 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 ]

2 голосов
/ 18 февраля 2010

Использование кода ниже должно решить проблему.

/* 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');
});

Но я все еще не уверен, почему GET-запрос к XML не работает.

2 голосов
/ 18 февраля 2010

Одинаковая политика происхождения , я думаю.

Хм. Если вы на самом деле получаете данные обратно, но Firefox не анализирует их должным образом ... пытались ли вы сделать это в JSON, а не в XML (запросив http://twitter.com/statuses/public_timeline.json)? или указав jQuery, что вы ожидаете возврата XML ( передача третьего аргумента "xml" jQuery.get()?

1 голос
/ 18 февраля 2010

Проверьте JSONP http://jquery -howto.blogspot.com / 2009/04 / twitter-jsonjsonp-api-url.html

Если вы просто хотите показать свои записи в своем блоге, например, вы можете использовать http://twitter.com/goodies/widgets

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...