Fullcalendar - 未从 element.value 读取事件和事件源中的 extraParams

Fullcalendar - extraParams in events and eventsources not being read from element.value

设置

我正在使用 Fullcalendar v4,我在使用 extraParams 并通过 AJAX.

将它们发送到服务器时遇到了一些问题

我想做的(但失败了)是使用这个:

    var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl, {
        plugins: ['interaction','dayGrid'],
        defaultView: 'dayGridMonth',
        selectable: true,
        selectMirror:true,
         .......
        eventSources: [{
            url: 'ajax/fc.php?dropdown='+$("#dropdown").val(),
            method: 'POST',
            cache: false,
            extraParams: {
                month: $("#monthPicker").val(),
                dropdown: $("#dropdown").val(),
                person: $("#person").val(),
                phone: document.getElementById("phone").value,
                testtext: 'hardcoded text'
            },
        }],
         ......
    });

月份、下拉列表、人员的值,phone 是从表单中提取的。

问题

同时转储 GETPOST 变量(服务器端),只是为了检查我收到的内容,对于 [=15= 以外的所有内容返回 0/空字符串] 参数 - 显示正确。

GET 参数仅用于测试目的,document.getElementById 位也是如此 - 我想看看如果我使用它们是否会显示任何内容(没有显示)。

即使我将代码更改为使用 events 而不是 eventSources,问题仍然存在。

经过进一步试验,日历似乎受到 初始化时出现的元素值的影响 - 如果我硬编码下拉列表、人员和其他输入的值 / select 元素,它们,并且只有它们被发送(忽略值的任何变化)。如果我只设置初始值(即 <input id="person" name="person" value="Joe">),也会发生同样的事情。

问题

如何强制 calendar(不破坏并重新创建它)实际注意到我想用作 extraParams 的输入值的变化?

如果我误解了 extraParams 的用法,我有什么选择?我需要能够将各种数据发送到服务器,以便获得一组特定的事件。

在此期间弄清楚了,感谢 this SO answer. Since the parameters are dynamic, they need to be sent as stated in the documentation(部分动态 extraParams 参数):

var calendar = new Calendar(calendarEl, {

  events: {
    url: '/myfeed.php',
    extraParams: function() { // a function that returns an object
      return {
        dynamic_value: Math.random()
      };
    }
  }

});

在我的例子中,它将变成:

    var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl, {
        plugins: ['interaction','dayGrid'],
        defaultView: 'dayGridMonth',
        selectable: true,
        selectMirror:true,
         .......
        event: {
            url: 'ajax/fc.php',
            method: 'POST',
            cache: false,
            extraParams: function() {
                return {
                    month: $("#monthPicker").val(),
                    dropdown: $("#dropdown").val(),
                    person: $("#person").val(),
                    phone: document.getElementById("phone").value,
                    testtext: 'hardcoded text'
                }
            },
        },
         ......
    });