我有一个剑道调度程序,我在移动事件方面遇到了问题。我一次只能移动一个事件,然后我什至无法抓取任何事件。我认为日期有问题,但我真的不知道为什么。我尝试使用 2-3 个事件进行dataSource
并且它正在工作,但是当我将完全相同的数据放入 php 并将其返回为 json 时。它不起作用。
任何帮助将不胜感激。
$("#scheduler").kendoScheduler({
date: new Date(),
startTime: new Date(today2()),
timezone: "Etc/UTC",
currentTimeMarker: false,
height: 800,
views:
[
"week",
{ type: "month", selected: true, eventHeight: 60}
],
dataSource:
{
transport:
{
read:
{
url: "tasks.php",
dataType: "json"
},
batch: true,
parameterMap: function (options, operation)
{
if (operation === "read") {
var scheduler = $("#scheduler").data("kendoScheduler");
var result =
{
start: scheduler.view().startDate(),
end: scheduler.view().endDate()
}
return kendo.stringify(result);
}
return kendo.stringify(options);
}
},
schema:
{
model:
{
id: "taskId",
fields:
{
taskId: { type: "number", from: "TT_CODE" },
start: { type: "date", from: "TT_START_DATETIME"},
end: { type: "date", from: "TT_END_DATETIME"},
title: { from: "TT_EDIT"}
}
}
}
}
});
带有 JSON 数据的 PHP 文件:
$json[0]['TT_CODE'] = 1;
$json[0]['TT_START_DATETIME'] = "2016-01-16 15:00:00";
$json[0]['TT_END_DATETIME']= "2016-01-16 16:00:00";
$json[0]['TT_EDIT'] = "Fast and furious 6";
echo json_encode($json);
由于您在模型中指定了start
和end
日期,因此调度程序期望收到正确格式的日期。虽然 JSON 将日期作为字符串传递,但 javascript 仍然希望对日期字符串进行格式化。
在您的情况下,它将是:
$json[0]['TT_CODE'] = 1;
$json[0]['TT_START_DATETIME'] = "2016-01-16T15:00:00.000Z";
$json[0]['TT_END_DATETIME']= "2016-01-16T16:00:00.000Z";
$json[0]['TT_EDIT'] = "Fast and furious 6";
您也可以将日期保留原样,并在parameterMap
函数中使用自定义逻辑处理字符串。
作为旁注,如果您对类型格式有疑问,请转到浏览器控制台并查看网络选项卡。 您将能够将工作服务发送的数据与 PHP 发送的数据进行比较,看看差异在哪里。