jQuery FullCalendar插件的跨域JSON提要

时间:2010-07-15 16:30:03

标签: php jquery json fullcalendar

我正在使用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();
   }
});

文档说“如果您需要访问位于其他域中的Feed,则可以在URL中使用带有?的JSONP(请参阅$.ajax中的JSONP讨论)。”

但我不确定该怎么做。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在高级别,JSONP允许您指定在AJAX请求返回数据时要调用的回调函数的名称。 HTTP GET操作可以在不同的域中发生(当您从其他主机嵌入图像时,您正在创建HTTP GET)。 POST(和PUT,DELETE等)仅限于与文档相同的域(这称为同源策略)。 JSONP在文档中添加了一个额外的参数(通常是'回调')和JavaScript函数的值(回调函数)。发送JSON的服务器需要知道提取该参数的值。您的请求可能如下所示:

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

cal.json servlet将返回此

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

现在这段JavaScript引用了你传递给它的回调函数,但没有相应的

  function _calDraw(data) {
     //render stuff
  }

返回的数据将失败。与您正在进行JSONP调用的任何服务器建立一定程度的信任非常重要,因为您授予他们在文档中执行JavaScript的权限(他们不必返回有效的内容)。

希望这有帮助!