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 是从表单中提取的。
问题
同时转储 GET
和 POST
变量(服务器端),只是为了检查我收到的内容,对于 [=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'
}
},
},
......
});
设置
我正在使用 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 是从表单中提取的。
问题
同时转储 GET
和 POST
变量(服务器端),只是为了检查我收到的内容,对于 [=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'
}
},
},
......
});