JS .append 来自 PHP 结果 - FullCalendar
JS .append from PHP Result - FullCalendar
我正在学习使用 JS,我正在使用 PHP 实现 fullCalendar。
到目前为止一切顺利,基本功能正常运行:从 PHP + MySQL 提取/存储/更新...一切顺利!
现在的问题是我想用从数据库中提取的 PHP 数据填充下拉菜单 [Students],其中 JS 构建了一个模式,我认为应该是 AJAX ,但我想不通。
在当前代码下面,除了下拉起点和附上图片外,没有添加任何东西。提前致谢:
/* on select */
CalendarApp.prototype.onSelect = function (start, end, allDay) {
var $this = this;
$this.$modal.modal({
backdrop: 'static'
});
var form = $("<form></form>");
form.append("<div class='row'></div>");
form.find(".row")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Event Name</label><input class='form-control' placeholder='Insert Event Name' type='text' name='title'/></div></div>")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Category</label><select class='form-control' name='category'></select></div></div>")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Students</label><select class='form-control' name='students'></select></div></div>")
.find("select[name='category']")
.append("<option value='bg-danger'>Danger</option>")
.append("<option value='bg-success'>Success</option>")
.append("<option value='bg-purple'>Purple</option>")
.append("<option value='bg-primary'>Primary</option>")
.append("<option value='bg-pink'>Pink</option>")
.append("<option value='bg-info'>Info</option>")
.append("<option value='bg-warning'>Warning</option></div></div>");
$this.$modal.find('.delete-event').hide().end().find('.save-event').show().end().find('.modal-body').empty().prepend(form).end().find('.save-event').unbind('click').click(function () {
form.submit();
});
$this.$modal.find('form').on('submit', function () {
var title = form.find("input[name='title']").val();
var beginning = form.find("input[name='beginning']").val();
var ending = form.find("input[name='ending']").val();
var categoryClass = form.find("select[name='category'] option:checked").val();
if (title !== null && title.length != 0) {
$this.$modal.modal('hide');
var theStart = moment(start).format();
var theEnd = moment(end).format();
var theData = {
title,
theStart,
theEnd,
categoryClass
};
sendData('add', theData);
}
else{
Swal.fire("Enter the Event Name!");
}
return false;
});
$this.$calendarObj.fullCalendar('unselect');
},
对于 jQuery,您使用 ajax 函数。此函数使 http 请求在完成时调用回调。有多种回调和设置它们的方法,我建议你看看文档。在这种情况下我们使用 done
,它只在请求成功时被调用。
为了在附加选项时避免字符串插值,我使用第二个 attributes 参数来设置值和文本。
var form = $("<form></form>");
$("body").append(form)
form.append("<div class='row'></div>");
form.find(".row")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Students</label><select class='form-control' name='students'></select></div></div>");
$.ajax({
url: "path/to/students/endpoint",
dataType: "json", //assuming you return json from you php script
}).done(function (students){
//assuming students is an array of names
var select = form.find('select[name=students]');
for(var name of students) {
select.append($("<option></option>", {
value: name,
text: name
}))
}
})
//Since this is an example and I cant actually make an ajax call
function fakeAjaxResponse(students) {
var select = form.find('select[name=students]');
for(var name of students) {
select.append($("<option></option>", {
value: name,
text: name
}))
}
}
fakeAjaxResponse([
"StudentA",
"StudentB"
])
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
我正在学习使用 JS,我正在使用 PHP 实现 fullCalendar。
到目前为止一切顺利,基本功能正常运行:从 PHP + MySQL 提取/存储/更新...一切顺利!
现在的问题是我想用从数据库中提取的 PHP 数据填充下拉菜单 [Students],其中 JS 构建了一个模式,我认为应该是 AJAX ,但我想不通。
在当前代码下面,除了下拉起点和附上图片外,没有添加任何东西。提前致谢:
/* on select */
CalendarApp.prototype.onSelect = function (start, end, allDay) {
var $this = this;
$this.$modal.modal({
backdrop: 'static'
});
var form = $("<form></form>");
form.append("<div class='row'></div>");
form.find(".row")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Event Name</label><input class='form-control' placeholder='Insert Event Name' type='text' name='title'/></div></div>")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Category</label><select class='form-control' name='category'></select></div></div>")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Students</label><select class='form-control' name='students'></select></div></div>")
.find("select[name='category']")
.append("<option value='bg-danger'>Danger</option>")
.append("<option value='bg-success'>Success</option>")
.append("<option value='bg-purple'>Purple</option>")
.append("<option value='bg-primary'>Primary</option>")
.append("<option value='bg-pink'>Pink</option>")
.append("<option value='bg-info'>Info</option>")
.append("<option value='bg-warning'>Warning</option></div></div>");
$this.$modal.find('.delete-event').hide().end().find('.save-event').show().end().find('.modal-body').empty().prepend(form).end().find('.save-event').unbind('click').click(function () {
form.submit();
});
$this.$modal.find('form').on('submit', function () {
var title = form.find("input[name='title']").val();
var beginning = form.find("input[name='beginning']").val();
var ending = form.find("input[name='ending']").val();
var categoryClass = form.find("select[name='category'] option:checked").val();
if (title !== null && title.length != 0) {
$this.$modal.modal('hide');
var theStart = moment(start).format();
var theEnd = moment(end).format();
var theData = {
title,
theStart,
theEnd,
categoryClass
};
sendData('add', theData);
}
else{
Swal.fire("Enter the Event Name!");
}
return false;
});
$this.$calendarObj.fullCalendar('unselect');
},
对于 jQuery,您使用 ajax 函数。此函数使 http 请求在完成时调用回调。有多种回调和设置它们的方法,我建议你看看文档。在这种情况下我们使用 done
,它只在请求成功时被调用。
为了在附加选项时避免字符串插值,我使用第二个 attributes 参数来设置值和文本。
var form = $("<form></form>");
$("body").append(form)
form.append("<div class='row'></div>");
form.find(".row")
.append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Students</label><select class='form-control' name='students'></select></div></div>");
$.ajax({
url: "path/to/students/endpoint",
dataType: "json", //assuming you return json from you php script
}).done(function (students){
//assuming students is an array of names
var select = form.find('select[name=students]');
for(var name of students) {
select.append($("<option></option>", {
value: name,
text: name
}))
}
})
//Since this is an example and I cant actually make an ajax call
function fakeAjaxResponse(students) {
var select = form.find('select[name=students]');
for(var name of students) {
select.append($("<option></option>", {
value: name,
text: name
}))
}
}
fakeAjaxResponse([
"StudentA",
"StudentB"
])
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>