設定
我正在使用 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'
},
}],
......
});
月份、下拉串列、人員、電話的值是從表單中獲取的。
問題
轉儲 theGET和POST變數(服務器端),只是為了檢查我收到的內容,除了month引數之外的所有內容都會回傳 0 / 空字串 - 它顯示正確。
該GET引數僅用于測驗目的,因此document.getElementById有點-我想看看如果我使用它們是否會出現任何東西(什么也沒做)。
即使我將代碼更改為使用events而不是eventSources.
經過進一步的實驗,日歷似乎受到初始化時出現的元素值的影響——如果我對下拉串列、人員和其他輸入/選擇元素的值進行硬編碼,它們,只有它們被發送(值的任何變化都是忽略)。<input id="person" name="person" value="Joe">如果我只設定初始值(即),也會發生同樣的事情。
問題
如何強制calendar(沒有破壞和重新創建它)實際注意到我想用作的輸入值的變化extraParams?
如果我誤解了 的使用extraParams,我的替代方案是什么?我需要能夠向服務器發送各種資料,以便獲得一組特定的事件。
uj5u.com熱心網友回復:
由于這個 SO answer,在此期間想通了。由于引數是動態的,因此需要按照檔案中的說明發送它們(部分動態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'
}
},
},
......
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/434809.html
