我已经阅读了很多有关我的问题的帖子,但没有一个回答我的问题。 这是我的代码:
events: function(start, end, callback){
var rcn = document.getElementById("rcn").value;
$.ajax({
type: 'GET',
url: 'AJAX_selectEvent.do',
data: {
'rcn' : rcn
},
dataType: 'json',
headers : {
Accept : "application/json; charset=utf-8",
"Content-Type" : "application/json; charset=utf-8"
},
success: function(data) {
var events = [];
$(data).each(function() {
events.push({
id: $(this).attr('id'),
title: $(this).attr('title'),
start: $(this).attr('start'),
end: $(this).attr('end'),
resourceId: $(this).attr('resourceId')
});
});
console.log("Ajax call success");
console.dir(events);
callback(events);
},
error : function(data) {
console.log(data);
alert("Ajax call error");
}
});
},
如您所见,我正在从参数“ rcn”中获取JSON数据。在我的成功功能中,我可以看到它,但是它不会显示在日历中。我收到警告:
VM1608 main.js:5162 undefined (26) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
使用console.dir(data),我可以看到(当然有26行):
Array(26){id:“ 0”,标题:“ 50602378”,开始:“ 08/07/19”,结束:“ 09/07/0019”,resourceId:“ p”}
您能帮助我理解为什么我从回调(事件)中收到警告,为什么它不显示事件吗?
谢谢
答案 0 :(得分:1)
我无法重现您的确切警告。我使用您提供的示例数据(由Java输出)对代码进行了演示,但将示例数据粘贴到myjson.com上的虚拟端点URL中。参见http://jsfiddle.net/fpz1m2w4/。使用fullCalendar v3会产生错误
回调不是函数
其根本原因是您错误地指定了事件函数的参数。根据{{3}},参数应为function( start, end, timezone, callback )
-您并未指定所有参数,因此您要调用的变量callback
实际上包含时区。 JavaScript仅使用参数的位置来确定要传递给它的内容,而不是名称-名称实际上可以是您喜欢的任何名称(因此function(a, b, c, d)
的作用相同,尽管尚不清楚维护)。
如果您修复了该错误,则代码应该可以正常工作-演示:v3 docs。
但是,我实际上不需要任何这些。您的Java(因为您更改了日期格式)似乎已经以fullCalendar期望的正确格式生成了数据。因此,您不需要执行所有这些额外处理。您实质上是在重新创建具有相同结构的数组,因此显然这毫无意义。
(此外,请注意,访问响应的属性不需要$(this).attr('id')
之类的代码-JSON数据被解析为普通的JS对象,因此this.id
会产生相同的结果结果。.attr()
语法仅在试图从结构更复杂的jQuery对象(表示HTML元素)或XML节点中获取时才需要。
相反,您应该只能使用http://jsfiddle.net/fpz1m2w4/1/模式,在该模式中,您只需为fullCalendar提供服务器URL,并提供一些简单的选项,例如获取您的rcn
值的回调,fullCalendar将负责构造AJAX请求,接收响应并将数据加载到日历中。
这是您需要的代码:
events: {
url: "AJAX_selectEvent.do",
data: function() {
return {
"rcn": document.getElementById("rcn").value
}
},
error: function(data) {
console.log(data);
alert("Ajax call error");
}
}
这是使用虚拟URL的演示:events as a JSON feed