ExtJS 4: JSONRPC 2.0 в качестве протокола хранилища? - PullRequest
2 голосов
/ 01 октября 2011

Я хотел бы реализовать графический интерфейс пользователя на основе ExtJS версии 4. Веб-служба, которую я хочу использовать, предоставляет данные в виде наборов результатов вызовов jsonrpc-2.0.

Я не могу найти в документации ничего о том, как это сделать. Я использую прокси AJAX? Если да, то как мне сгенерировать правильные запросы POST для jsonrpc?

отредактировано для уточнения : У меня уже есть средство для выполнения запросов jsonrpc2 на сервер, и сервер отвечает правильным ответом. Так что я думаю, мне действительно нужен магазин, который вызывает пользовательские функции и определяет обратные вызовы или что-то подобное. Вызов этого механизма выглядит следующим образом:

jsonrpc2.call("method_name", parameterObject, 
        function(success, data_or_error_object) { /* callback code */ })

с method_name, таким как "create", "update" и т. Д., ПараметрObject - это в основном обычный объект javascript с именованными параметрами.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Может быть, вам стоит взглянуть на Ext.Direct. Хотя это не совсем то, что вы ищете, это очень похоже на JSON-RPC, поэтому просмотр исходного кода для Ext.data.DirectStore должен дать вам несколько советов о том, как вы можете реализовать JSONRpc магазин.

0 голосов
/ 02 октября 2011

В хранилище Ext.js есть прокси-сервер, с помощью которого вы можете определить URL-адреса для API-действий для операций CRUD, но при этом основное внимание уделяется предоставлению URL-адреса для действий, которые обычно представляют собой метод на стороне сервера для выполнения действий.

Если вы используете прокси-сервер локального сервера, такой как type: 'ajax', вы можете затем вызвать метод 'sync ()' в хранилище, чтобы отправить запросы для каждой операции на URL / методы, определенные в хранилище..

Крайне важно, чтобы вы сохранили определенную вами функцию 'call', поскольку я не думаю, что она вам понадобится в этой ситуации.

Если вы хотите сделать этоПри вызовах с использованием JSONP вы можете определить хранилище с «типом» JSONP, как в этом примере:

var store = Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
    type: 'jsonp',
    url : 'http://domainB.com/users'
    }
});

store.load();

Прокси-сервер JSONP на самом деле не используется для других операций, кроме загрузки, хотя, если вы хотите манипулировать записями вудаленный сервер, вы должны обернуть данные в параметры, и это не рекомендуемый маршрут.

...