我正在使用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讨论)。”
但我不确定该怎么做。
提前感谢您的帮助。
答案 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的权限(他们不必返回有效的内容)。
希望这有帮助!