2011-04-13 61 views
0

我正在尝试将fullCalendar插件集成到网站中。我遇到的问题是,我试图通过json/$。ajax方法将当前视图发送给它,作为自定义参数发送给月,议程日等。FullCalendar - 通过ajax发送视图

$('#calendar').fullCalendar({ 
events: { 
    url: 'feed.php', 
    type: 'POST', 
    data: { 
     view: $('#calendar').fullCalendar('getView').name 
    }, 
    error: function() { 
     alert('there was an error while fetching events!'); 
    } 
} 
}); 

以上是返回任何错误但自定义view变量不与正常的值一起通过。

我曾尝试以下:

$('#calendar').fullCalendar({ 
    events: { 
     url: 'feed.php?view=' + $('#calendar').fullCalendar('getView').name, 
     ....... 

但这只是添加?view=undefined到Ajax调用。我知道$('#calendar').fullCalendar('getView').name的工作原理是因为它返回正确的值,所以它必须是view: $('#calendar').fullCalendar('getView').name行,但我不确定是什么。

回答

0

它看起来像你试图访问fullCalendar之前已经初始化。尝试将其分解成不同的步骤:

$('#calendar').fullCalendar(); 
var viewName = $('#calendar').fullCalendar('getView').name; 
$('#calendar').fullCalendar({ 
    events: { 
     url: 'feed.php', 
     type: 'POST', 
     data: { 
      view: viewName 
     }, 
     error: function() { 
      alert('there was an error while fetching events!'); 
     } 
    } 
}); 
+0

使用此方法当用户切换视图时,我将如何更新viewName变量? – 2011-04-13 08:07:40

+0

你的原始代码实际上有同样的问题(如果它工作的话)。对'getView'的调用是立即进行的,而不是在发出ajax请求时。我不熟悉fullCalendar给你一个很好的解决方案。 – gilly3 2011-04-13 08:11:31

0

这是因为您在初始化之前调用“fullCalendar()”,并且不允许这样做。

$('#calendar').fullCalendar({...}); 

这意味着$( '#日历')(jQuery对象)将会由您发送的值{...}进行初始化。

因此,在完成fullCalendar()初始化之前,您不能使用它。

3

只是想我会将我的解决方案添加到此问题中以备将来参考。

通过简单地确定startend时间戳之间的天数,通过fullCalendar传递到我的服务器端PHP我可以知道我们正在检索哪个视图数据。

$NumberOfDaysInView = abs($_GET['start'] - $_GET['end'])/60/60/24; 

希望这有助于!