我们的项目目前使用Silverlight来使用Odata服务。这使得生活变得非常简单,因为我们可以引用OData服务,从而为我们提供生成的服务引用/实体。
然而,我们是否应该转向Html(html5)进行讨论。如果我们做出这个改变,我想知道会发生什么。我们当然会利用像jQuery这样的框架。
谢谢!
答案 0 :(得分:16)
OData sources can return data as JSON因此,您的网页可以对您的数据进行XHR并将其作为JSON接收,然后将其反序列化为Javascript对象,以便您进行分离,操作或显示。
以下是一些可以帮助您入门的其他链接:
HTH。
答案 1 :(得分:11)
我们还制作了一个非常酷的小库Data.js (http://datajs.codeplex.com/),它可以显着加快来自JavaScript的OData消耗。以下是CoffeeScript中的示例:
success = (data) -> $("#searchResultsTemplate").tmpl(data).appendTo("#resultsArea")
error = (err) -> $("#resultsArea").text(JSON.stringify(err.message))
do ->
$("#search").click(->
OData.defaultHttpClient.enableJsonpCallback = true
OData.read("http://odata.netflix.com/v2/Catalog/Titles?$top=5", success, error))
它生成的JavaScript:
success = function(data) {
return $("#searchResultsTemplate").tmpl(data).appendTo("#resultsArea");
};
error = function(err) {
return $("#resultsArea").text(JSON.stringify(err.message));
};
(function() {
return $("#search").click(function() {
OData.defaultHttpClient.enableJsonpCallback = true;
return OData.read("http://odata.netflix.com/v2/Catalog/Titles?$top=5", success, error);
});
})();
到目前为止,我已经成功地将它与CoffeeScript,jQuery和Knockout.js一起使用。
答案 2 :(得分:3)
作为替代方案,您可以根据supercool datajs库向JayData提供oData支持。它在几个存储提供商或协议上提供了一个抽象的数据访问层,其中一个重要的是OData。
上面提到的查询看起来像这样
var source = new $data.yourOdataContext({serviceUri:"http://odata.netflix.com/v2/Catalog"});
source.Titles
.take(5)
.forEach( function(catalog) { render(catalog); });
正如您可能不希望这会被转换为... /标题?$ filter = 5,因此即使简单的语法可能建议,也不会在客户端上进行操作。
JayData将为您提供JavaScript Language Query (JSLQ),让您使用ES5标准过滤器函数查询数据:所有使用JavaScript,不需要OData查询语法知识。
答案 3 :(得分:1)
如果要在表中显示数据并使用排序,分页,搜索,可以使用带有OData连接器https://www.datatables.net/的jQuery dataTables插件http://vpllan.github.io/jQuery.dataTables.oData/
您不需要任何其他编程,因为dataTables将为您执行操作。
答案 4 :(得分:0)
您可以基于我编写的axios来使用此OData客户端。
https://github.com/fabio-nettis/ODCJ
用于Java的OData连接器或更旧的名称为ODCJ,是基于诺言的客户端,它使用axios建立与OData V3 / V4服务的连接。 ODCJ提供了许多有用的功能来自定义请求url和过滤属性。