У меня есть очень простой кусок jQuery, чтобы получить мой последний твит
$.getJSON("http://twitter.com/statuses/user_timeline/username.json?count=1", function(data) { $("#tweet_text").html(data[0].text); });
Это прекрасно работает с простым HTML-файлом на моем рабочем столе. Однако, как только файл доступен с моего локального хоста (apache), данные не возвращаются. Мне было интересно, блокирует ли какая-либо часть Apache запрос? Или есть другие идеи?
JavaScript в настоящее время не может выполнять прямые запросы между доменами из-за Политики одного происхождения .
Тебе лучше всего подумать JSONP для этого.
Вы можете найти больше информации об этом из jQuery :
Если URL содержит строку "callback =?" в URL запрос обрабатывается как JSONP. См. Обсуждение типа данных jsonp в $. Ajax () для получения более подробной информации.
jsonp
и Twitter :
Параметры: обратный вызов: необязательно. Доступно только для формата JSON. Если указан, ответ будет использовать формат JSONP с обратным вызовом с указанным именем. Пример: http://search.twitter.com/search.json?callback=foo&q=twitter
Параметры:
обратный вызов: необязательно. Доступно только для формата JSON. Если указан, ответ будет использовать формат JSONP с обратным вызовом с указанным именем.
http://search.twitter.com/search.json?callback=foo&q=twitter
Надеюсь, это поможет.
Исправление ...
Если status/user_timeline поддерживает JSONP, это не задокументировано как таковое.
status/user_timeline
Возможно, вам придется настроить междоменный прокси , чтобы получить нужные данные.
Попробуйте добавить callback=? к URL. Как это
callback=?
"http://twitter.com/statuses/user_timeline/username.json?count=1&callback=?"
может быть, по какой-то причине HTML-файл загружается на localhost немного дольше, и вы не завершили сценарий в готовом виде. поэтому он делает вызов, и в этот момент нет #tweet_text для заполнения
Это сокращенная функция Ajax , которая эквивалентна:
$.ajax({ url: url, dataType: 'json', data: data, success: success });
Ajax (не-JSONP) не может пересекать домены.