我已经搜索了Scheduledo小部件的KendoUI文档,并在“高级”论坛上提出了这个问题,但无济于事。

我试图将会议数据发布到我的NodeJS API。在文档之后,我在dataSource构造函数中设置了此传输对象以进行更新:

update: {
  url: "/meeting",
  dataType: "json",
  type: "POST"
}


这应该反映AJAX对象的属性。但是,req.params,req.body和req.query数据均为空。我使用Fiddler检查了请求正文的内容,内容如下:

_id=56bcab3a2df7994c5a073201&created_by=andrewwimley&case_desc=asdf&creation_timestamp=Thu+Feb+11+2016+09%3A39%3A38+GMT-0600+(CST)&date=Thu+Feb+11+2016+09%3A39%3A38+GMT-0600+(CST)&createdBy=andrewwimley&createDateTime=02%2F11%2F2016+09%3A39+am&endDateString=02-10-2016+11%3A59+pm&startDateString=02-10-2016+12%3A00+am&type=schedule_entry&__v=0&meeting_id=56bcab3a2df7994c5a073201&case_name=asdfFFFF&start_time=Thu+Feb+11+2016+09%3A39%3A38+GMT-0600+(Central+Standard+Time)&end_time=Thu+Feb+11+2016+09%3A39%3A38+GMT-0600+(Central+Standard+Time)&desc=asdf&mediator_LawyerIDs%5B%5D=475840&meeting_result=Manual


这显然不是JSON格式。通过KendoUI强制进行JSON格式化,或者找到一个能够将其解析为JSON对象的节点模块都可以解决我的问题。

最佳答案

约翰回答了他的评论。

Kendo声明正在读取,更新和销毁对象的对象是AJAX对象的镜像。显然情况并非如此,因为您只需要使用AJAX:

dataType: "json",
contentType: "application/json",
type: "POST"


使请求正文可解析为JSON。

但是,KendoUI要求设置parameterMap属性。像这样配置它解决了我的数据类型问题:

update: {
  url: "/meeting", //node rewrite
  dataType: "JSON",
  type: "POST",
  contentType: "application/json; charset=utf-8"
},
parameterMap: function (data, op) {
  return JSON.stringify(data);
}

10-07 21:23