использовать веб-сервис с помощью Dojo - PullRequest
0 голосов
/ 27 февраля 2012

Я хочу использовать веб-сервис Restful, используя dojo.результат веб-сервиса возвращается в браузере, но когда я пытался получить результат, используя xhr, я всегда получаю нулевое значение, поэтому, пожалуйста, помогите, я новичок в dojo ...происходит событие, отображается предупреждение, и я получил «ноль»

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

На самом деле API-интерфейсы dojo.data более ограничены, чем новые API-интерфейсы dojo.store (доступно с версии 1.6).

Для использования спокойного веб-сервиса мой совет - использовать dojo.store.JsonRest магазин.Нет необходимости в определенном формате Json.

Вот хороший пример использования JsonRest: http://dojotoolkit.org/documentation/tutorials/1.7/store_driven_tree/

2 голосов
/ 28 февраля 2012

Dojo использует «хранилища» для извлечения данных с серверов. Эти магазины лениво извлекают данные, поэтому только при первом запросе. Каждый раз, когда ваш код JavaScript нуждается в данных, он может запросить их в хранилище и, если он уже получил их, он вернет их, а в противном случае он выйдет и получит их.

Из-за асинхронного характера хранилищ вам необходимо выполнять асинхронный вызов каждый раз, когда вам нужны данные.

В вашем случае вы могли бы сделать что-то вроде:

// Create the store for later use
var store = new dojo.data.ItemFileReadStore({
  contentType: 'application/json'
  ,clearOnClose: true
  ,urlPreventCache: true
  ,url: "http://192.168.1.65:9080/RAD8JAX-RSWeb/jaxrs/customers"
});

И каждый раз, когда вам нужно получить данные из магазина, вы делаете:

store.fetch({
  onItem: function(item, request) {
    alert('I fire after each returned json item')
  }
  ,onComplete: function(items, findResult) {
    alert('I fire when the data has loaded completely.');
  }
  ,onError: function(error, request) {
    alert('I fire when an error occurs');
  }
});

Только в первый раз будет отправлен запрос на сервер. Все остальные запросы будут обслуживаться из кеша магазинов. Если вы хотите очистить кеш, вам нужно «закрыть» магазин. В следующий раз при вызове извлечения в хранилище будет получен новый запрос к серверу. Вы можете закрыть его следующим образом:

store.close();

Хранилища предназначены для обслуживания данных сервера транспарантным способом. Так что не имеет значения, что вы обслуживаете json, xml или csv: все это будет загружено в магазин и доставлено вам таким же образом. Вам просто нужно знать две вещи:

  1. Данные должны обслуживаться в определенном формате: формат
  2. Все элементы, которые вы получаете в методах onItem и onComplete, могут использоваться только через API dojo Read, с которым вы можете ознакомиться здесь: http://dojotoolkit.org/api/1.7/dojo/data/api/Read

Существует много типов магазинов, ItemFileReadStore - только пример.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...