我非常熟悉jQuery AJAX并且一直使用它。 Kendo UI构建于jQuery及其“AJAX”的基础之上。与&对接使用jQuery将参数传递给HttpHandler很简单,只需执行以下操作:
使用JQUERY AJAX:
$.ajax({
complete: self.onComplete,
data: { SiteId: 777 }, // <--- this gets appended to the post
dataType: 'json',
error: self.onError,
success: self.onSuccess,
url: self.url
});
我的问题:
我试图找到data
(上面)的KendoUI等效调用。
KENDO代码看起来像:
<script type="text/javascript">
$(document).ready(function () {
var dataSource = new kendo.data.DataSource({
transport:
{
read: {
url: "Handlers/Attempt1Synch.ashx",
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
data: { SiteId: 777 }
}
// parameterMap: function (data, operation) {
// return JSON.stringify(data);
// }
},
schema: { data: "People" }
});
$("#grid").kendoGrid({
height: 360,
width: 500,
dataSource: dataSource,
groupable: true,
scrollable: true,
sortable: true,
pageable: true,
columns:
[{
field: "Id",
width: 0
},
{
field: "FirstName",
width: 90,
title: "First Name"
},
{
field: "LastName",
width: 90,
title: "Last Name"
},
{
width: 100,
field: "City"
},
{
field: "Title"
},
{
field: "BirthDate",
title: "Birth Date",
template: '#= kendo.toString(BirthDate,"dd MMMM yyyy") #'
},
{
width: 50,
field: "Age"
}]
});
});
</script>
<div id="grid">
</div>
我的HTTP HANDLER看起来像:
public class Attempt1Synch : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var siteId = Convert.ToInt32(context.Request["SiteId"]);
var serializer = new JavaScriptSerializer();
var response = mock(siteId);
context.Response.ContentType = "text/json";
context.Response.Write(serializer.Serialize(response));
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
答案 0 :(得分:3)
我已经发现这是他们之前版本中的一个已知问题。 The newest release fixes this。因此,您必须首先下载最新版本的KendoUI
,如下所示:
V1 2011 SP1(2011.3.1407版) - 2012年2月
- 请参阅'OData不提交用户定义的参数'
但是,上面的代码存在也问题。代码应省略 POST
命令。
新的数据来源应该看起来像:
只有DataSource
对象不正确。新的应该是这样的 -
var dataSource = new kendo.data.DataSource({
transport:
{
read:
{
url: "Handlers/Attempt1Synch.ashx",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: { SiteId: 777 }
},
schema: { data: "People" }
});