Php ExtJS4:将复杂数据发送到服务器,并在新的浏览器窗口中打开结果

Php ExtJS4:将复杂数据发送到服务器,并在新的浏览器窗口中打开结果,php,extjs,extjs4,form-submit,slim,Php,Extjs,Extjs4,Form Submit,Slim,我想在服务器上生成一个.xlsx文件(如果需要使用PHP),并在新的浏览器窗口中打开结果(实际上是“另存为…”窗口)。要在服务器上生成文件,我必须传递复杂的数据(文件设置),如: 为此,我做了如下工作: Ext.create(Ext.form.Panel).submit({ clientValidation: false, method: 'POST', params: [ { 'value1': 1, 'v

我想在服务器上生成一个.xlsx文件(如果需要使用PHP),并在新的浏览器窗口中打开结果(实际上是“另存为…”窗口)。要在服务器上生成文件,我必须传递复杂的数据(文件设置),如:

为此,我做了如下工作:

Ext.create(Ext.form.Panel).submit({
    clientValidation: false,
    method: 'POST',
    params: [
        {
            'value1': 1,
            'value2': 2,
            'value3': 3
        },
        {
            'value4': 4,
            'value5': 5,
            'value6': 6
        }    
    ],
    standardSubmit: true,
    target: '_blank',
    url: 'my/real/url'
});
但在我的服务器上,我不断得到错误的数据,比如

Array (
    [0] => [object Object]
    [1] => [object Object]
)
在my
$\u POST中(其中[object object]是实际字符串)或

在我的
$data
中(我使用的是Slim框架)


事实上,我尝试了许多变通方法,但我从未在服务器端获得所需的数据。可能我使用了错误的方法,或者只是做了错误的事情?

原因是
standardSubmit
config将导致Ext JS创建一个
,并使用您传入的表单项和参数的值向该表单添加项。
项不能包含数组或对象等复杂值

您可以在数据发送之前对其进行编码,然后在服务器上对其进行解码:

Ext.create(Ext.form.Panel).submit({
    clientValidation: false,
    method: 'POST',
    params: {
        data: Ext.encode([
            {
                'value1': 1,
                'value2': 2,
                'value3': 3
            },
            {
                'value4': 4,
                'value5': 5,
                'value6': 6
            }    
        ])
    },
    standardSubmit: true,
    target: '_blank',
    url: 'my/real/url'
});
然后在您的服务器上,不确定Slim框架(从未使用过),但使用PHP您可以使用
json\u decode

$data = json_decode($_POST['data']);

原因是
standardSubmit
config将导致Ext JS创建一个
,并使用您传入的表单项和参数的值向该表单添加项。
项不能包含数组或对象等复杂值

您可以在数据发送之前对其进行编码,然后在服务器上对其进行解码:

Ext.create(Ext.form.Panel).submit({
    clientValidation: false,
    method: 'POST',
    params: {
        data: Ext.encode([
            {
                'value1': 1,
                'value2': 2,
                'value3': 3
            },
            {
                'value4': 4,
                'value5': 5,
                'value6': 6
            }    
        ])
    },
    standardSubmit: true,
    target: '_blank',
    url: 'my/real/url'
});
然后在您的服务器上,不确定Slim框架(从未使用过),但使用PHP您可以使用
json\u decode

$data = json_decode($_POST['data']);

谢谢,似乎将数据编码为JSON是唯一的方法。如果有人对如何使用PHP Slim处理这个问题感到好奇-
$data=json\u decode($app->request()->post('data'),true)谢谢,似乎将数据编码为JSON是唯一的方法。如果有人对如何使用PHP Slim处理这个问题感到好奇-
$data=json\u decode($app->request()->post('data'),true)
$data = json_decode($_POST['data']);