1 回答
TA贡献1802条经验 获得超4个赞
这里最简单的选择是使其成为calendar全局的,以便可以在所有范围内访问它。
例如
<script>
var calendar; //global variable
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
calendar = new FullCalendar.Calendar(calendarEl, { //don't re-declare it here, just assign it
///...etc
但全局变量通常不是最佳实践 - 如果您不小心,它可能会导致其他问题。因此,另一个选择是停止使用内联事件处理程序来触发 saveData,而是在 DOMContentLoaded 块内添加一个事件处理程序,当然该块calendar已经在范围内。您使 saveData 从 AJAX 调用返回一个 Promise,然后在事件处理程序中向其附加一个.done()回调,并在其中调用 refetchEvents。
所以在这个版本中,你的按钮将变成
<button type="button" class="btn btn-primary" id="savedata">SAVE</button>
saveData() 将变为:
function saveData()
{
var Room = document.getElementById("Room").value;
var EventName = document.getElementById("EventName").value;
var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
var promise = $.ajax({
url: "addEvent.php",
type:"POST",
data:{ EventName: EventName, start:start, end: end },
});
$('#ModalAdd').modal('hide');
return promise;
}
最后在 DOMContentLoaded 区域:
document.addEventListener('DOMContentLoaded', function() {
//....everything which is already there....and then...
$("#savedata").click(function() {
var promise = saveData();
promise.done(function(data) {
calendar.refetchEvents();
});
});
});
尽管看起来需要更多工作,但这是一个比使用全局变量更好的结构化版本。
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报