Междоменный фид JSON для плагина jQuery FullCalendar - PullRequest
0 голосов
/ 15 июля 2010

Я использую PHP для извлечения событий из FullCalendar в качестве канала JSON, но мне нужно поддерживать несколько доменов. Мне нужна переменная строки запроса, чтобы указать, из какого календаря нужно извлекать события ... это вызывает проблемы? Вот код инициализации FullCalendar:

$('#full-calendar".$id."').fullCalendar({
   editable: false,
   events:'http://www.mydomain.com/resources/include/calendar-events.php?cal=".$id."',
   loading: function(bool) {
       if (bool) $('#loading').show();
       else $('#loading').hide();
   }
});

Документация гласит: «Если вам нужен доступ к каналу, который находится в другом домене, вы можете использовать JSONP со знаком? В своем URL (см. Обсуждение JSONP в $.ajax)».

Но я не совсем уверен, как это сделать.

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 21 июля 2010

Хорошо на высоком уровне, JSONP позволяет вам указать имя функции обратного вызова, которую вы хотите вызвать, когда запрос AJAX возвращается с данными. Операции HTTP GET могут выполняться в разных доменах (когда вы встраиваете изображение с другого хоста, вы создаете HTTP GET). POST (и PUT, DELETE и т. Д.) Ограничены тем же доменом, что и документ (это называется той же политикой происхождения). JSONP, добавляет дополнительный параметр (обычно «обратный вызов») со значением функции JavaScript в вашем документе (функция обратного вызова). Сервер, отправляющий JSON, должен знать, чтобы извлечь значение для этого параметра. Ваш запрос может выглядеть так:

 GET http://ical.example.com/cal.json?callback=_calDraw

Сервлет cal.json вернет это

 _calDraw({event:{date:'12/25/2010',title:'Jason\'s birthday'}});

Теперь этот бит JavaScript ссылается на функцию обратного вызова, которую вы передали ему, но без соответствующего

  function _calDraw(data) {
     //render stuff
  }

Возвращенные данные просто не получатся. Важно, чтобы у вас был какой-то уровень доверия к любому серверу, к которому вы делаете вызов JSONP, потому что вы даете им разрешение на выполнение JavaScript в вашем документе (они не должны возвращать что-то допустимое).

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

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