Javascript数组对象未定义
尝试访问数组对象以将数据发送到Cakephp中的视图。我在控制台中不断得到一个“未捕获的引用错误,对象未定义”。代码如下:Javascript数组对象未定义,javascript,jquery,cakephp,Javascript,Jquery,Cakephp,尝试访问数组对象以将数据发送到Cakephp中的视图。我在控制台中不断得到一个“未捕获的引用错误,对象未定义”。代码如下: /* initialize the calendar -----------------------------------------------------------------*/ var arrayOfEvents = []; $('#calendar').fullCalendar({ header: {
/* initialize the calendar
-----------------------------------------------------------------*/
var arrayOfEvents = [];
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaWeek,agendaDay'
},
defaultView: 'agendaWeek',
editable: true,
events: [
<?php foreach ($users as $user) { foreach ($user['Event'] as $event): ?>
{
start: '<?php echo $event['start_date']; ?>',
end: '<?php echo $event['end_date']; ?>',
title: '<?php echo $event['title']; ?>',
allDay: false,
color: '#077169'
},
<?php endforeach; } ?>
],
droppable: true, // this allows things to be dropped onto the calendar !!!
drop: function(date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.end = (date.getTime() + 3600000) / 1000; // default shift length is 1 hour
copiedEventObject.userId = originalEventObject.userId;
copiedEventObject.allDay = false;
// render the event on the calendar
// the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
// Push events into array
---> arrayOfEvents.push(copiedEventObject);
//todo: the calendar needs to insert events into the event calendar.
console.log(arrayOfEvents);
}
});
});
function updateSchedule()
{
---> var data = "numOfEvents=" + arrayOfEvents.length;
// You can get all events out of the array here
for (var i = 0; i < arrayOfEvents.length; i++) {
var event = arrayOfEvents[i];
data += "&id" + i + "=" + event.id
+ "&start" + i + "=" + event.start
+ "&end" + i + "=" + event.end;
}
// Make your ajax post here
$.ajax({
type: "POST",
url: "<?php echo $this->webroot; ?>events/add",
data: data,
success: function(response) {
alert('done!');
},
fail: function(response) {
alert("error");
}
});
}
/*初始化日历
-----------------------------------------------------------------*/
var arrayOfEvents=[];
$(“#日历”).fullCalendar({
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“agendaWeek,agendaDay”
},
defaultView:'agendaWeek',
是的,
活动:[
{
开始:“”,
结束:“”,
标题:“”,
全天:错,
颜色:“#077169”
},
],
可拖放:true,//这允许将内容拖放到日历上!!!
drop:function(date,allDay){//在删除某些内容时调用此函数
//检索已删除元素的存储事件对象
var originalEventObject=$(this.data('eventObject');
//我们需要复制它,这样多个事件就不会引用同一个对象
var copiedEventObject=$.extend({},originalEventObject);
//将其指定为报告的日期
copiedEventObject.start=日期;
copiedEventObject.end=(date.getTime()+3600000)/1000;//默认轮班时间为1小时
copiedEventObject.userId=原始EventObject.userId;
copiedEventObject.allDay=false;
//在日历上呈现事件
//最后一个'true'参数确定事件是否“持续”(http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$(“#calendar”).fullCalendar('renderEvent',copiedEventObject,true);
//将事件推送到数组中
--->阵列事件。推送(复制事件对象);
//todo:日历需要在事件日历中插入事件。
控制台日志(arrayOfEvents);
}
});
});
函数updateSchedule()
{
--->var data=“numOfEvents=“+arrayOfEvents.length;
//您可以在此处从数组中获取所有事件
对于(var i=0;i
arrayOfEvents是在调度程序将一个人放到日历上时定义的。它正在将其所有信息传输到arrayOfEvents对象上。我为调度器提供了一个链接,可以通过ajax调用将所有最近安排的人员添加到数据库中。函数似乎没有接收arrayOfEvents。欢迎提出任何意见。最后的
})
before函数updateSchedule
显示变量arrayOfEventsis
未定义在同一范围内。将updateSchedule
移动到同一范围内,或将变量arrayOfEventsis
移出其当前范围。最后一个})
before函数updateSchedule
显示变量arrayOfEventsis
未定义在同一范围内。将updateSchedule
移动到同一范围内,或将变量arrayOfEventsis
移出其当前范围。您的代码是否完整?它似乎遗漏了第一部分。第一部分只是将数据从用户表传输到日历。我正在把我需要的所有数据输入arrayOfEvents。console.log正在显示它。看起来您的arrayOfEvents不在全局范围内,是否在其他处理程序中?您可以在函数updateSchedule上方的“var arrayOfEvents=[];”行中尝试。无关:您的代码将在IE中中断。在事件数组中有一个结尾逗号。@sdespont就是这样做的。如果你想回答我的问题,我会把它归功于你。谢谢大家!你的代码完整吗?它似乎遗漏了第一部分。第一部分只是将数据从用户表传输到日历。我正在把我需要的所有数据输入arrayOfEvents。console.log正在显示它。看起来您的arrayOfEvents不在全局范围内,是否在其他处理程序中?您可以在函数updateSchedule上方的“var arrayOfEvents=[];”行中尝试。无关:您的代码将在IE中中断。在事件数组中有一个结尾逗号。@sdespont就是这样做的。如果你想回答我的问题,我会把它归功于你。谢谢大家!我必须把函数移到文档准备就绪和变量声明之外,我必须把函数移到文档准备就绪和变量声明之外。