首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过Html/Javascript使用OData服务?

如何通过Html/Javascript使用OData服务?
EN

Stack Overflow用户
提问于 2012-04-12 03:11:38
回答 5查看 36.6K关注 0票数 19

我们的项目目前使用Silverlight来使用Odata服务。这使得工作变得非常简单,因为我们可以只引用OData服务,从而得到生成的服务引用/实体。

然而,关于我们是否应该转向超文本标记语言(html5),还有一些讨论。我想知道如果我们做这个改变会发生什么。当然,我们会利用像jQuery这样的框架。

  • 我主要关心的是如何通过JavaScript/jQuery使用相同的OData服务。
  • 我们应该如何反序列化/序列化从此OData服务返回的实体?
  • 是我们的数据约定应该是硬编码的(如果是,这对我们来说真的是不可接受的)?

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-12 03:23:32

JSON,这样你的网页就可以XHR你的数据,并以OData sources can return data as JSON的形式接收它,它被反序列化为一个Javascript对象,供你拆分并执行或显示。

以下是一些帮助您入门的附加链接:

HTH。

票数 16
EN

Stack Overflow用户

发布于 2012-04-12 08:03:24

我们还制作了一个非常酷的小库,叫做Data.js (http://datajs.codeplex.com/),它将极大地提高JavaScript中的OData消耗速度。以下是CoffeeScript中的一个示例:

代码语言:javascript
复制
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:

代码语言: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上使用了它。

票数 11
EN

Stack Overflow用户

发布于 2012-05-02 21:52:26

作为另一种选择,您可以尝试JayData,它具有oData支持-基于超酷的datajs库。它在几个存储提供商或协议上提供了一个抽象的数据访问层,其中一个重要的协议就是OData。

上面提到的查询如下所示

代码语言:javascript
复制
var  source = new $data.yourOdataContext({serviceUri:"http://odata.netflix.com/v2/Catalog"});

source.Titles
  .take(5)
  .forEach( function(catalog) { render(catalog); });

因为您可能不希望将其转换为.../Titles?$filter=5,所以操作不是在客户端完成的,即使简单的语法可能会建议这样做。

JayData将为您提供JavaScript Language Query (JSLQ),让您可以使用ES5标准过滤器函数查询数据:只需使用JavaScript,无需OData查询语法知识。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10112376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档