我正在尝试按照文档http://docs.kendoui.com/api/web/grid#configuration-dataSource中的定义显示来自网络服务的数据 它说“ReferenceError:没有定义回调”。 关注我的html文件;
<div id="grid"></div>
<script>
var dataSource = new kendo.data.DataSource({
transport: {
read: {
url: "http://127.0.0.1:8080/test/services/Rest/getP",
dataType: "jsonp",
jsonCallback: "jsonp"
}
},
pageSize: 10
});
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true
});
</script>
以下是webservice的返回
callback([{"eventId":"123","eventName":"S2S"}])
Webservice是用java开发的。以下是代码;
@GET
@Path("/getP")
@Produces("application/x-javascript")
public String getInJSONP() {
String str = "callback([{\"eventId\":\"123\",\"eventName\":\"S2S\"}])";
System.out.println(str);
return str;
}
如果我将html文件中的url更改为他们在示例http://demos.kendoui.com/service/products中提供的url,它可以正常工作但如果我将其更改为我的Web服务url则会出错。如果有人可以根据kendo网格的输入指导我如何编写web服务,因为我猜这是数据的错误。
答案 0 :(得分:0)
您的网页是否需要在与您的网页不同的网络域中调用网络服务?如果不是,那么您想要从Web服务中使用简单的json返回(请参阅我的fiddle for grid read示例)。这个例子使用来自jsFiddle的“echo”服务,它只返回你在帖子中发送它的json。此回声服务需要如下所示的帖子。
read: {
url:'/echo/json/',
type:'POST',
data: {
json: JSON.stringify(testdata)
}
}
您的客户端Ajax调用看起来更像Kendo's datasource documentation中的std。 您的Web服务操作将返回的数据应如下所示: [{“City”:“Redmond”,“FirstName”:“Anne”,“Title”:“Software Developer”,“LastName”:“Fuller”,“Age”:48,“BirthDate”:“1966-03- 27T05:00:00.000Z“,”Id“:1},{”城市“:”纽约“,”名字“:”罗伯特“,”标题“:”首席技术官“,”姓氏“:”达沃利奥“ ,“年龄”:54,“出生日期”:“1960-05-29T04:00:00.000Z”,“Id”:2}]
BTW - 设计简单Web服务(尤其是与实体CRUD相关的服务)的一个很好的标准是REST pattern - 其中http Post用于实体Create,Put用于实体更新,Delete用于实体更新,Get和检索实体。