我有一个Kendo UI Grid,它从远程URL获取数据,但是使用的类型是POST而不是GET(这是一个要求)。
我正在使用HTML,JQUery,WEB API堆栈
要发送的数据基本上是转换为json对象的表单post值
var oDs = new kendo.data.DataSource({
type: "odata",
transport: {
read: ajaxUrl,
type: "POST",
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(dataToSend)
},
schema: {
model: {
id: "userid",
fields: {
userid: { type: "string" },
username: { type: "string" },
age: { type: "string" },
email: { type: "string" },
status: { type: "string" }
}
}
},
pageSize: 20,
serverPaging: true,
serverSorting: true,
serverFiltering: true
});
$("#gridResult").kendoGrid({
dataSource: oDs,
total: oDs.view().length,
columns: [
{ field: "userid", title: "User ID" },
{ field: "username", title: "User Name" },
{ field: "age", title: "Age" },
{ field: "email", title: "Email" },
{ field: "status", title: "Status" },
],
noRecords: {
template: "No results found."
},
});
我收到"无法加载资源:服务器响应状态为405(方法不允许)" 错误。 Web API控制器方法是使用HTTPPOST作为HTTP Verb开发的。 如果我使用ajax调用单独获取数据并将该数据分配给kendo ui网格数据,那么它可以工作。这里的问题是客户方面的一切。有超过10000+的记录,它正在阻塞系统。 我希望Paging和filter是服务器端,数据是使用POST而不是GET获取的。请指导我。我们非常感谢您的帮助。
答案 0 :(得分:1)
DataSource配置已应用type:"odata"
设置。这会强制执行GET请求类型。请删除dataSource type
以获得所需的结果。您可能需要设置schema.data
和schema.total
,具体取决于确切的服务器响应结构。
http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.data
http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.total