【问题标题】:Kendo DataSource reads my remote database but won't save things to itKendo DataSource 读取我的远程数据库,但不会将内容保存到其中
【发布时间】:2013-09-09 22:01:43
【问题描述】:

它可以读取远程数据库,它可以在本地创建新项目,但它们实际上并不保存到远程数据库。这是添加新项目的原因:

function addNewItem(){
  dataSource.add({id:"0", petName:"Dusty", petSpecies:"Dog", petGender:"M"});
  dataSource.sync();
}
$('#addPet').bind('click', addNewItem);

这个函数中的 ajax POST 调用而不是 dataSource 的东西完美地添加到我的数据库中:

var object = { id:"0", petName:"Dusty", petSpecies:"Dog", petGender:"M" };
$.ajax({
  type: "POST",
  url: 'website/petData',
  headers: { "Authorization" : "Bearer ${AccessToken}" },
  contentType: "application/json",
  data: JSON.stringify(object)
}) 

这是我的数据源代码。我需要改变什么?我已经尝试过很多不同的事情,但还没有运气。

var dataSource = new kendo.data.DataSource({
  type: "everlive",   
  transport: {
    typeName: 'petData',
    read: {
      url: "website/petData",
      dataType: "jsonp"
    },
    create: {
      url: 'website/petData',
      dataType: "jsonp"
    }
  },
  group: "petSpecies",
  schema: {
    model: {
      id: "id",
      fields: {
        id: { type: "number"},
        petName: { type: "text" },
        petSpecies: { type: "text" },
        petGender: { type: "text" }
      }
    }
  }
});

【问题讨论】:

  • HTTP POST 是否真的发生并返回错误,或者它甚至没有尝试 POST 新记录?如果它执行 POST,返回的错误是什么,此外,对象尝试 POST 的样子是什么?您可以尝试从添加到数据源的对象中删除 id 属性,并让 kendo 数据源为您执行此操作。过去我遇到过一些问题。
  • 按照@giltnerj0 所说的去做,并在浏览器的开发人员工具 (F12) 中查看您的网络选项卡,以查看 POST 是否正在发生。此外,您需要确保服务器上的控制器操作返回 POST 创建的新对象。 Kendo 数据源需要这个来更新其内部列表。
  • 啊,太棒了,我不知道你可以在网络选项卡中看到这些东西。它根本不是在做 POST。它正在做 GET 。我也尝试删除 Id 的东西,仍然没有 POST。

标签: kendo-ui datasource crud icenium everlive


【解决方案1】:

因此,感谢 giltnerj0 和 Brett 的 cmets,我能够在 Google 上搜索到正确的词,并发现我需要做的就是将 create 的 dataType:jsonp 更改为 json。我现在收到一些 POST 错误,但它最终会发布并将内容保存到我的数据库中。

create: {
  url: 'website/petData',
  dataType: "json"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多