Restful grid. Store не отправляет PUT,POST,DELETE запросы на сервер.

61 views
Skip to first unread message

biohazardo

unread,
Feb 22, 2012, 4:50:35 AM2/22/12
to rue...@googlegroups.com
Добрый день!:)
ExtJS 4.
Есть грид с данными. Необходимо из него удалять. Было решено использовать rest store, но появилась проблема. Store прекрасно загружает серверные json-данные, но ни в какую не отправляет ничего (вообще нет запроса) при методе remove. Вот код: 


        this.store = Ext.create('Ext.data.Store', {
            autoSync:true,

            model:this.model,

            addCondition:function (key, value) {
                this.proxy.extraParams[key] = value;
                return this;
            },
            sorters:[
                {
                    property:'NAME',
                    direction:'ASC'
                }
            ],
            proxy:{

                
                type:'rest',
                extraParams:{
                    model:this.model
                },
                url:document.head.baseURI + 'rest',
                /*api:{   //пробовал и это.
                    read:document.head.baseURI + 'rest',
                    create:document.head.baseURI + 'rest',
                    destroy:document.head.baseURI + 'restd',
                    update:document.head.baseURI + 'rest'
                },*/
                reader: {
                    type: 'json',
                    root: 'data'

                },
                writer: {
                    type: 'json',
                    encode: true,
                    root: 'data'
                },
                actionMethods:{
                    create: "POST",
                    destroy: "DELETE",
                    read: "GET",
                    update: "PUT"

                }

            },
        });

Сколько не бьюсь с ним, ничего не выходит. Хоть бы меленьких запросик. Навешивать listeners на него не очень хочется, хочется чтобы он сам все делал, этот store. Пробовал и ajax тип у прокси, и рест. Ничего не меняется. autoSync включал и отключал. Меня ссылки на api и обратно. Ни одного запроса. Вызываю метод стора так: 

clientgrid.store.remove(selection);

 Что делать, как запустить, где может быть ошибка?
 

Konstantin Mirin

unread,
Feb 22, 2012, 5:04:26 AM2/22/12
to rue...@googlegroups.com
О©╫О©╫-О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ model.destroy(), О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫.

On 02/22/2012 11:50 AM, biohazardo wrote:
О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫!:)
ExtJS 4.
О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ rest store, О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. Store О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ json-О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫ О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ (О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫) О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ remove. О©╫О©╫О©╫ О©╫О©╫О©╫:О©╫


О©╫ О©╫ О©╫ О©╫ this.store = Ext.create('Ext.data.Store', {
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ autoSync:true,

О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ model:this.model,

О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ addCondition:function (key, value) {
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ this.proxy.extraParams[key] = value;
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ return this;
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ },
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ sorters:[
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ {
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ property:'NAME',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ direction:'ASC'
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ }
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ ],
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ proxy:{

О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫О©╫
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ type:'rest',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ extraParams:{
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ model:this.model
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ },
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ url:document.head.baseURI + 'rest',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ /*api:{ О©╫ //О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫.
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ read:document.head.baseURI + 'rest',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ create:document.head.baseURI + 'rest',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ destroy:document.head.baseURI + 'restd',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ update:document.head.baseURI + 'rest'
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ },*/
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ reader: {
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ type: 'json',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ root: 'data'

О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ },
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ writer: {
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ type: 'json',
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ encode: true,
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ root: 'data'
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ },
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ actionMethods:{
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ create: "POST",
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ destroy: "DELETE",
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ read: "GET",
О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ update: "PUT"

О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ }

О©╫ О©╫ О©╫ О©╫ О©╫ О©╫ },
О©╫ О©╫ О©╫ О©╫ });

О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ listeners О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫ store. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ ajax О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫ О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. autoSync О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ api О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫:О©╫

clientgrid.store.remove(selection);

О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫?
О©╫
--
О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ ruextjs.
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ https://groups.google.com/d/msg/ruextjs/-/CaS7EHDuR74J.
О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ rue...@googlegroups.com.
О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ ruextjs+u...@googlegroups.com.
О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ http://groups.google.com/group/ruextjs?hl=ru.

-- 
Best regards,
Konstantin Mirin.

mailto:konstant...@gmail.com
My blog: http://programmersnotes.info/

biohazardo

unread,
Feb 22, 2012, 11:09:21 AM2/22/12
to rue...@googlegroups.com
Не знаю, что у меня с кодировкой, но ваше соообщение только на гмэйле прочитать смог. Буду на работе - попробую:)

Denis Shelemekh

unread,
Feb 22, 2012, 2:08:33 PM2/22/12
to ruextjs
Проверьте чтобы свойство модели idProperty указывало на реальный
primary key.

Если не выйдет - отключите все проверки (validations) и включая по-
одной, найдите источник проблем.

Если autoSync отключен - нужно вызывать метод store.sync().

Message has been deleted
Message has been deleted

biohazardo

unread,
Feb 24, 2012, 5:07:23 AM2/24/12
to rue...@googlegroups.com
Начал использовать direct store и включил idProperty (rest proxy с ним все равно не заработал). autoSync начал вызывать функции при добавлении и удалении. Но вот update передает пустые данные. На Store использую метод set на рекорде. после этого идет update запрос без исходящих данных. Что надо, чтобы апдейт передал данные редактированной ячейки? ( Пробовал еще после этого store.save(), отправилось тоже самое, что и просто при методе set()).

И еще... id при создании генерируется на сервере. В ответ приходят данные с новым id. Как его вставить в этот стор и обновить грид. Чтобы было видно пришедший id у созданной только что записи...

biohazardo

unread,
Feb 24, 2012, 7:09:19 AM2/24/12
to rue...@googlegroups.com
Апдейт вроде починил, из за сервера он данные не отправлял. Из за настроек модели на сервере. Но все же проблема с подстановкой идентификатора осталась.

 При добавлении новой записи в ответе приходит новая, с новым id.

В гриде мелькает старая запись с нулевым ид, а потом в ней пропадает все, кроме этого нуля. Поле name пропадает... Если в консоли посмотреть данные стора - то эта запись имеет пустые поля... Что делать?

biohazardo

unread,
Feb 27, 2012, 1:37:36 AM2/27/12
to rue...@googlegroups.com
Ошибка была в поле root ридера. Поменял его и все встало.:)

пятница, 24 февраля 2012 г. 16:09:19 UTC+4 пользователь biohazardo написал:
Reply all
Reply to author
Forward
0 new messages