【发布时间】: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