2014-01-24 57 views
0

我试图显示来自Web服务的数据,如他们的文档http://docs.kendoui.com/api/web/grid#configuration-dataSource 中定义的那样,它显示“ReferenceError:callback is not defined”。 以下是我的html文件;Kendo网格不显示远程数据

<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> 

以下是

callback([{"eventId":"123","eventName":"S2S"}]) 

Webservice的是Java开发web服务的回报。以下是代码;

@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在提供它工作正常,但如果我将其更改为我的Web服务URL它给错误的人。如果任何人都可以指导我如何根据kendo网格的输入编写webservice,因为我猜测它是数据的错误。

回答

0

您的网页是否需要在与您的网页不同的网域中调用网络服务?如果不是,那么你想从你的web服务中使用一个简单的json返回(参见我的fiddle for grid read示例)。这个例子使用jsFiddle中的“echo”服务,它只是简单的返回你在post中发送的json。这种回声服务需要像下面这样的Post。

read: { 
     url:'/echo/json/', 
     type:'POST', 
     data: { 
      json: JSON.stringify(testdata) 
     }     
    } 

您的客户端Ajax调用看起来更像Kendo's datasource documentation中的std。 Web服务操作返回的数据应该如下所示: [{“城市”:“Redmond”,“FirstName”:“Anne”,“标题”:“软件开发人员”,“姓氏”:“Fuller “年龄”:48,“BirthDate”:“1966-03-27T05:00:00.000Z”,“Id”:1},{“城市”:“纽约”,“名字”:“罗伯特”, “Title”:“首席技术官”,“LastName”:“Davolio”,“年龄”:54,“BirthDate”:“1960-05-29T04:00:00.000Z”,“Id”:2}]

顺便说一句 - 设计简单Web服务(特别是与实体CRUD相关的服务)的一个很好的标准是REST pattern-其中一个http Post用于实体Create,Put用于实体更新,Delete用于实体更新,Get用于检索实体。

+0

其不同的域。我在调用由java自己创建的jsonp数据时出错。 web服务安装在java中创建的tomcat上,而html文件部署在wamp服务器上。一个在8100端口,一个在8080端口。 Web服务正在使用休息模式。我试图创建一个单独的Web服务,它返回一个bean作为JSON,但仍然没有运气。我硬编码的结果,以检查它是否有效,但仍然没有运气。 –

+0

@StrugglingUser你找到答案了吗? –

+0

还没找到。 –