Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > ExtJS, Ext.data.Store. Проблема с POST запросом.


Автор: Fighter 13.10.2012, 22:51
Здравствуйте. Есть у меня Store:
Код

Ext.define('AM.store.Users', {
   extend: 'Ext.data.Store',
   fields: ['name', 'email'],
   model: 'AM.model.User',
   autoLoad: true,
   proxy: {
       type: 'ajax',
       api: {
            read: 'Main/GetUsers',
            update: 'Main/UpdateUsers'
       },
       reader: {
           type: 'json',
           root: 'users',
           successProperty: 'success'
       }
   }
});


А также у меня есть модель:
Код

Ext.define('AM.model.User', {
   extend: 'Ext.data.Model',
   fields: ['name', 'email']
});


Внутри контроллера есть такой обработчик:
Код

    updateUser: function (button) {
        console.log('clicked the Save button');
        var win = button.up('window'),
            form = win.down('form'),
            record = form.getRecord(),
            values = form.getValues();

        console.log(values);
        record.set(values);
        console.log(record);
        win.close();
        this.getUsersStore().sync();

    }


Все работает. Проблема в следующем. Когда появляется список пользователей, если первый раз открыть запись для редактирования и сохранить её, тогда мы получаем следующий post-запрос:
POST /Main/UpdateUsers?_dc=1350157766279 HTTP/1.1

А в теле запроса вот что:
{"name":"Mark2333","email":"[email protected]","id":2}

Пока что все правильно. 
Затем, если мы следующую запись отредактируем и нажмем Save, то тогда мы можем наблюдать следующую картину в теле запроса:
[{"name":"Mark2333","email":"[email protected]","id":2},{"name":"Mark432322","email":"[email protected]","id":4}]

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

Автор: Fighter 14.10.2012, 08:39
Вроде бы решил проблему следующим способом:
Код

...
        this.getUsersStore().sync();
        this.getUsersStore().reload();


Автор: ExSoft 18.10.2012, 13:54
Цитата(Fighter @ 13.10.2012,  22:51)

А в теле запроса вот что:
{"name":"Mark2333","email":"[email protected]","id":2}

Пока что все правильно. 
Затем, если мы следующую запись отредактируем и нажмем Save, то тогда мы можем наблюдать следующую картину в теле запроса:
[{"name":"Mark2333","email":"[email protected]","id":2},{"name":"Mark432322","email":"[email protected]","id":4}]

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

Давать правильный ответ на http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-sync

Цитата(Fighter @ 14.10.2012,  08:39)
Вроде бы решил проблему следующим способом:
Код

        this.getUsersStore().reload();

При правильном ответе с сервера в этом нет необходимости

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)