Kendo网格未显示远程数据

时间:2014-01-24 09:07:34

标签: javascript html5 web-services jax-rs kendo-grid

我正在尝试按照文档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服务,因为我猜这是数据的错误。

1 个答案:

答案 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和检索实体。