Вопрос по javascript, jquery – Как использовать сервис OData с Html / Javascript?

18

Наш проект в настоящее время использует Silverlight для использования сервиса Odata. Это сделало жизнь довольно простой, поскольку мы можем просто ссылаться на сервис OData, давая нам сгенерированные ссылки на сервисы / сущности.

Тем не менее, существует некоторая дискуссия о том, следует ли нам перейти на HTML (HTML5). Я хотел бы знать, чего ожидать, если мы сделаем это изменение. Конечно, мы будем использовать такую среду, как jQuery.

My main concern is how to consume the same OData service via JavaScript/jQuery. How are we suppose to deserialize/serialize entities returned from this OData service? Is our data contract supposed to be hard-coded (if so, this is really unacceptable for us)?

Спасибо!

Ваш Ответ

4   ответа
10

Data.js (http://datajs.codeplex.com/) это значительно ускорит потребление OData из JavaScript. Вот пример в 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.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
15

Источники OData могут возвращать данные в формате JSON так что ваши веб-страницы могут XHR ваши данные и получить их в виде JSON, который десериализован обратно в объект Javascript для вас, чтобы вы могли разобрать и обработать или отобразить.

Вот несколько дополнительных ссылок для начала:

New Javascript OData Library [MSDN] OData protocol by example [MSDN] Leveraging OData end-points in JSON format with JQuery Consume an OData service with JayData Consume an OData service with BreezeJS

НТН.

Error: User Rate Limit Exceededdatajs.codeplex.com/documentation
0

разбиение по страницам, поиск, вы можете использовать плагин jQuery dataTableshttps://www.datatables.net/ с разъемом ODatahttp://vpllan.github.io/jQuery.dataTables.oData/

Вам не нужно никакого дополнительного программирования, так как dataTables выполнит там ваши операции.

3

JayData, который имеет поддержку oData - на основе библиотеки superjol datajs. Он обеспечивает абстрактный уровень доступа к данным через несколько провайдеров хранения или протоколов, одним из них является OData.

Вышеупомянутый запрос будет выглядеть примерно так

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 не требуется.

Похожие вопросы