Javascript Can';t从extjs ajax接收post参数

Javascript Can';t从extjs ajax接收post参数,javascript,php,ajax,extjs,Javascript,Php,Ajax,Extjs,我试图将网格更新持久化到数据库,因此我在控制器中写入: //... editUser: function(button, eventObj) { var view = Ext.widget('useredit'); view.down('form').loadRecord(this.getSelected()); }, getSelected: function() { var grid = this.getUserList(); var

我试图将网格更新持久化到数据库,因此我在控制器中写入:

    //...
    editUser: function(button, eventObj) {   
    var view = Ext.widget('useredit');
    view.down('form').loadRecord(this.getSelected());
},

getSelected: function() {
    var grid = this.getUserList();
    var selectedRecord = grid.getSelectionModel().getSelection()[0];
    return selectedRecord;
},
updateUser: function(button) {
    var win = button.up('window'),
            form = win.down('form'),
            record = form.getRecord(),
            values = form.getValues();
    record.set(values);
    form.updateRecord();
    win.close();
    this.getUsersStore().sync();
}
});
这是我的商店代码:

Ext.define('MyApp.store.Users', {
extend: 'Ext.data.Store',
model: 'MyApp.model.User',
autoLoad: true,
proxy: {
    type: 'ajax',
    actionMethods:
            {create: 'POST', read: 'GET', update: 'POST', destroy: 'POST'},
    api: {
        create: 'data/createUser.php',
        read: 'data/getUsers.php',
        update: 'data/updateUser.php',
        destroy: 'data/deleteUser.php'
    },
    reader: {
        type: 'json',
        root: 'users',
        successProperty: 'success'
    }
}
}))

当我点击“保存”按钮时,firebug告诉我POST请求已发送到我的php文件,但当我 在php中print\r($\u POST)它显示了一个空数组。这是怎么回事?

默认情况下,代理将JSON字符串作为原始POST数据发送到服务器。PHP的
$\u POST
超全局从原始POST数据中获取变量/参数(如果可能),例如,如果它包含url编码的数据:

var1=a&var2=b&var3=c
但是,由于POST数据只是一个JSON字符串,因此没有可提取的键=值对,这就是为什么
$\u POST
数组为空的原因

要读取原始post数据,可以使用PHP的输入流:

或者,在ExtJS中,您还可以告诉编写器使用和配置将JSON字符串作为HTTP参数传递给请求:

proxy: {
    // ...
    writer: {
        type: 'json',
        encode: true,
        root: 'users'
    }
}
这将导致编写器生成如下POST数据:

users={"var1":"a","var2":"b","var3":"c"}
因此,允许您在PHP中使用
$\u POST
变量:

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