2010-07-15 4 views
0

Я использую PHP, чтобы вытащить события из FullCalendar в качестве канала JSON, но мне нужно поддерживать несколько доменов. Мне нужна переменная querystring, чтобы указать, какой календарь вытягивать события из ... это вызывает проблему? Вот FullCalendar код инициализации:Перекрестный домен JSON для jQuery Плагин 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

Ну, на высоком уровне, 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 в вашем документе (им не нужно возвращать что-то действительное).

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

Смежные вопросы