Search code examples
arraysextjsloadstore

how to post array by store of sencha


I create one store and init it with some params with one array.when I execute the load function, the array parameter becomes a string '[object object]'

the code as follows:

store:

Ext.define('test.store.info',{
    extend: 'Ext.data.Store',
    config:{
        model:'test.model.info',
        proxy:{
            type:'ajax',
            url:'http://domain/path',
            actionMethods:'POST'
        }
    }
});

model:

Ext.define('test.model.info',{
    extend:'Ext.data.Model',
    config:{
        fields:[
            'code',
            'data'
        ]
    }
})

use in controller:

var store = Ext.getStore('info');
params = {
    t1:[{
        f1:'aa'
    },{
        f2:'bb'
    }],
    t2:'ddd'
}
console.log(params)
store.load({
    params:params
});

or I just use Ajax function instead load function , the result is the same.

  Ext.Ajax.request({
        url:'http://domain/path',
        method:'post',
        params:params,
    });

I check the xhr within network of browser , it is a string as follows:

t1:[object Object]
t1:[object Object]
t2:ddd

when I check the server log, it shows :

t1:'[object Object]'
t1:'[object Object]'
t2:'ddd'

Solution

  • I found the solution , thank you

    1, just use jsonData instead params during Ajax, like follows:

    Ext.Ajax.request({
        url: ajmd.util.version.getHost()+'/archimedes/update/selfInfo',
        method:'post',
        // params:params,
        jsonData:params
    });
    

    2, or just encode the data before send

    params.t1 = Ext.encode(params.t1);