如何将eventSources中的数据提供给EventListener

时间:2014-08-22 17:01:25

标签: javascript symfony event-listener server-sent-events

我正在为我网站上的每个日历加载用于FullCalendar的EventListener。问题是有时我需要改变"方法"渲染事件(取决于URL)。 我想通过eventSources传递它,并能够收回EventListener中的URL。我试图在数据中加入一些东西而没有任何成功。

在calendar-settings.js上,我打了这个电话:

eventSources: [
 {
    url: Routing.generate('fullcalendar_loader'),
    type: 'POST',
    // A way to add custom filters to your event listeners
    data: {
    },
    error: function() {
        //alert('There was an error while fetching Google Calendar!');
    }
  }
]

2 个答案:

答案 0 :(得分:1)

SSE不支持发送POST数据。

基本上你必须使用GET发送你的参数。

替代方案是首先使用AJAX调用发送它(例如将其存储在PHP会话中,准备让您的SSE处理程序使用它),或者将数据放入cookie中(SSE确实支持cookie,但是只有不依赖于CORS:CORS和cookie冲突,并且cookie丢失。)或者使用XHR而不是SSE。

但GET听起来最适合您,因为数据听起来相对较短而且不是隐私权(即它不是密码)。

(快速插件:我的书第9章,HTML5 SSE数据推送应用程序深入讨论了上述所有主题。)

答案 1 :(得分:1)

所以我不得不改变一下我的EventSource并使用它:

eventSources: [ { url: Routing.generate('fullcalendar_loader'), type: 'GET', // A way to add custom filters to your event listeners data: { Information : "value" }, error: function() { //alert('There was an error while fetching Google Calendar!'); } } ]

我添加了一条路线:

<route id="fullcalendar_loader_{Information}" pattern="/fc-load-events/{Information}"> <default key="_controller">ADesignsCalendarBundle:Calendar:loadCalendar</default> <option key="expose">true</option> </route>

希望如果您遇到同样的问题,它将对您有用:)