Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Получение данных с условием (https://javascript.ru/forum/extjs/27880-poluchenie-dannykh-s-usloviem.html)

wUI 28.04.2012 08:00

Получение данных с условием
 
Всем доброго времени суток!:victory:

Почти готов мой графический компонент на ExtJs :) Но вопрос еще есть.

Данные получаю в виде json с помощью ajax обращения к файлу *.php.

Ext.define('BlackFrog', {
    extend: 'Ext.data.Model',
    fields: ['name', 'data1']
    });
    var store = Ext.create('Ext.data.JsonStore', {
        model: 'BlackFrog',
        proxy: {
            type: 'ajax',
            url: './resources/getData2.php',
            reader: {
                type: 'json',
                root: 'contents'
            }
        }
    });
    store.load();

Есть необходимость при вызове "getData2.php", передать ему параметры для запроса.
Не понял, существует ли в ExtJs удобный способ передачи этих параметров.

Пока вижу такой выход:
организовать на JS XMLHttpRequest и через request грузить данные в store.

nekto_O 28.04.2012 08:07

store.getProxy().extraParams = {...};
store.load();

или
store.load({
   params: {...}
});


В 1-м случае параметры сохраняются в proxy, во 2-м параметры единовременные.

wUI 28.04.2012 08:08

Нашел вроде подходящую статью: http://codeunit.ru/working-with-ajax-in-extjs-4
Почитаю, позже отпишусь :)

wUI 28.04.2012 08:11

nekto_O,
Огромное, Вам, спасибо! :)

wUI 28.04.2012 09:21

nekto_O,
Хотел бы задать еще один вопрос. Вернуть данные в ExtJS можно и через "Ext.Ajax.request", и с использованием Proxy(как в моем примере).
Из мануала ExtJS не совсем понятно, для меня, в чем принципиальная разница этих способов? Внесите пожалуйста немного ясности в этот вопрос.:)

P.S. Но в мануале ExtJs есть утешающая надпись "Usually developers will not need to create or interact with proxies directly.":)

nekto_O 28.04.2012 09:51

wUI,
Бывают случаи когда необходимо получить данные прямым запросом (не загружая в хранилище и не привязывая их к определенному объекту), тоесть, не зная заранее где придется использовать в дальнейшем. За всех не говорю, но лично мне в таких случаях удобнее использовать прямые запросы (Ext.Ajax.request()). В случаях когда я уверен что данные нужно будет использовать в совокупности (загружая форму, комбобокс, грид, и т.д.), то проще воспользоваться имеющимися у этих объектов методами (в Вашем случае load у хранилища, proxy лишь указывает источник данных для хранилища и как читать респонс). А принципиальной разницы я думаю нет, так как в обоих случаях используется XHR в качестве транспорта данных.

wUI 28.04.2012 11:45

nekto_O,
Понятно и подробно:) Душевно благодарю!


Часовой пояс GMT +3, время: 19:29.