JQuery не может получить данные с локального хоста - PullRequest
3 голосов
/ 24 марта 2010

У меня есть очень простой кусок jQuery, чтобы получить мой последний твит

$.getJSON("http://twitter.com/statuses/user_timeline/username.json?count=1", 
           function(data) {
              $("#tweet_text").html(data[0].text);
           });

Это прекрасно работает с простым HTML-файлом на моем рабочем столе. Однако, как только файл доступен с моего локального хоста (apache), данные не возвращаются. Мне было интересно, блокирует ли какая-либо часть Apache запрос? Или есть другие идеи?

Ответы [ 4 ]

7 голосов
/ 24 марта 2010

JavaScript в настоящее время не может выполнять прямые запросы между доменами из-за Политики одного происхождения .

Тебе лучше всего подумать JSONP для этого.

Вы можете найти больше информации об этом из jQuery :

Если URL содержит строку "callback =?" в URL запрос обрабатывается как JSONP. См. Обсуждение типа данных jsonp в $. Ajax () для получения более подробной информации.

и Twitter :

Параметры:

  • обратный вызов: необязательно. Доступно только для формата JSON. Если указан, ответ будет использовать формат JSONP с обратным вызовом с указанным именем.

Надеюсь, это поможет.


Исправление ...

Если status/user_timeline поддерживает JSONP, это не задокументировано как таковое.

Возможно, вам придется настроить междоменный прокси , чтобы получить нужные данные.

0 голосов
/ 24 марта 2010

Попробуйте добавить callback=? к URL. Как это

"http://twitter.com/statuses/user_timeline/username.json?count=1&callback=?"
0 голосов
/ 24 марта 2010

может быть, по какой-то причине HTML-файл загружается на localhost немного дольше, и вы не завершили сценарий в готовом виде. поэтому он делает вызов, и в этот момент нет #tweet_text для заполнения

0 голосов
/ 24 марта 2010

Это сокращенная функция Ajax , которая эквивалентна:

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: success
});

Ajax (не-JSONP) не может пересекать домены.

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