extjs: вложенные baseParams в запросе - PullRequest
1 голос
/ 04 августа 2010

В рамках Ajax-запроса я пытаюсь использовать вложенный объект для параметра "baseParams". По сути, я хотел бы создать URL-адрес типа «ajax.php? foo [controller] = demo & foo [action] = index ».

Ниже приведен код, который ошибочно выдает: «ajax.php? foo = [объект] & foo = [объект] ».

Ext.data.JsonStore(
    baseParams: {
        foo: {
            controller: 'demo',
            action: 'index'
        }
    },
    proxy: new Ext.data.HttpProxy({
        method: 'GET',
        url: '/ajax.php'
    }),
    (...)
);

Конечно, я мог бы написать что-то вроде ниже, но я искал более изящное решение.


Ext.data.JsonStore(
    proxy: new Ext.data.HttpProxy({
        method: 'GET',
        url: '/ajax.php?foo[controller]=demo&foo[action]=index'
    }),
    (...)
);

После нескольких попыток интересно, действительно ли это возможно. Но, может быть, я что-то пропустил. Вы можете помочь?

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Или используйте что-то вроде этого (что лучше, чем длинная строка URL):

baseParams: {
  'foo[controller]': 'demo',
  'foo[action]': 'index'
}
1 голос
/ 24 января 2011

Я сделал что-то подобное, что в конце идентично ответу Игоря Павелека, только немного более программно:

var foo = {
    'controller' : 'demo',
    'action' : 'index'
};

var gfObj = new Ext.ux.grid.GridFilters({paramPrefix: 'foo'});

var bp = gfObj.buildQuery(foo);

Ext.data.JsonStore({
    baseParams : bp,
    (...)
});
0 голосов
/ 05 августа 2010

baseParams: { foo['controller']: 'demo', foo['action']: 'index' }
Я бы порекомендовал это, я думаю, что есть простая разница запятых сверху

...