删除网格中的行时的奇怪JSON(Ext-JS 4)

时间:2012-11-20 08:30:12

标签: php javascript extjs extjs4

为了在网格中获取所选行,我使用:

'#deleteWorkerButton': {
                click: function(me, e, eOpts){
                    var grid = Ext.ComponentQuery.query('Worker')[0];
                    var selected = grid.getSelectionModel().getSelection()[0];

                    grid.getStore().remove(selected);
                }
            }

在我的商店中,我有发布此JSON的网址,但是当我使用json_decode时,我得到了这个:

object(stdClass) {
    id => "5";
    name => "tets";
    email => "era@sdfsa.com";
    phone => "test";
}

但我需要array(),而不是stdClass

这是我的商店:

Ext.define('Sabrina.store.Workers', {
    extend: 'Ext.data.Store',
    fields:['id', 'name', 'email', 'phone'],
    proxy: {
        type: 'ajax',
        api: {
            create  : 'php/usuarios.php?action=insert',
            read    : '../mega_sabrina_cake/workers/index',
            update  : 'php/usuarios.php?action=update',
            destroy : '../mega_sabrina_cake/workers/delete'
        },
        actionMethods: {
            create  : 'POST',
            read    : 'POST',
            update  : 'POST',
            destroy : 'POST'
        },
        reader: {
            type: 'json',
            root: 'Worker',
            rootProperty: 'Worker',
            successProperty: 'success',
            messageProperty: 'message'
        },
        writer: {
            type: 'json',
            writeAllFields: true,
            root: 'data',
            encode: true
        },
    },
    autoLoad: true,
    autoSync: true
});

所以,我用它来删除数据。在json_decode()?

时,我可以用我的商店来获取“NORMAL”数组

我认为问题在于:

grid.getStore().remove(selected);

2 个答案:

答案 0 :(得分:2)

请阅读the docs

  

混合json_decode(字符串$ json [, bool $ assoc = false [,int $ depth = 512 [,int $ options = 0]]])
  [...]
   的 ASSOC    如果为TRUE,则返回的对象将转换为关联数组。

答案 1 :(得分:2)

尝试将allowSingle: false添加到编写器配置中。默认情况下,它设置为true,这意味着在没有数组换行的情况下发送单个记录更改。