extjs:请求中的嵌套baseParams

时间:2010-08-04 11:58:10

标签: ajax extjs

在Ajax请求的框架中,我尝试使用嵌套对象作为参数“baseParams”。基本上,我想生成一个像“ajax.php? foo [controller] = demo& foo [action] = index ”的网址。

Bellow是错误产生的代码:“ajax.php? foo = [object]& foo = [object] ”。

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 个答案:

答案 0 :(得分:3)

或者使用类似这样的东西(比长网址字符串更好):

baseParams: {
  'foo[controller]': 'demo',
  'foo[action]': 'index'
}

答案 1 :(得分:1)

我做了类似这样的事情,这与Igor Pavelek的回应完全相同,只是程序化程度更高:

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,
    (...)
});

答案 2 :(得分:0)

baseParams: { foo['controller']: 'demo', foo['action']: 'index' }
我会推荐这个,我认为上面的逗号有简单的区别