Ext JS 4可编辑网格

时间:2011-07-25 11:15:49

标签: javascript extjs extjs4

我正在尝试编写ExtJS应用程序,它是网格,从服务器上的JSON文件加载数据,并将修改后的字段发送回服务器。问题是,我无法实际将更改或添加的数据发送回服务器脚本。这是代码:

var store = Ext.create('Ext.data.Store', {
    model: 'ObjectDefinitionModel',
    autoDestroy: true,
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url: 'load-object-definition',
        api: {
            read: 'load-object-definition',
            create: 'save-object-definition',
            update: 'update-object-definition',
            destroy: 'delete-object-definition'
        },
        reader: {
            type: 'json',
            root: 'fields'
        },
        writer: {
            type: 'json',
            root: 'fields'
        }
    }
});

我有按钮,按下时调用store.sync()。在syncinc之后,save-object-definition 中的脚本执行,但它收到的所有内容(在POST和GET中)都是[_dc] => 1311511955134,我不知道它是什么。 API文档说明所有更改和添加的数据都应该通过代理自动打包和发送。官方示例不显示实际发送的任何数据,只显示一些调试消息。 感谢任何帮助,提前感谢。

2 个答案:

答案 0 :(得分:0)

我在我的一个项目中也面临同样的问题,我应该只将新添加或更新的记录发送到服务器进行保存。我最初尝试使用与您在此处发布的方法相同的方法,但稍后(因为它对我也不起作用)我创建了自定义代码以执行以下操作:

一个。当用户单击要保存的按钮时,浏览网格的所有记录并识别更新或新添加的记录。

湾创建一个包含所有此类记录的自定义JSON,并使用此JSON作为参数之一向服务器发出Ajax请求。

这一切绝对是额外的工作,但终于为我服务了。

希望这有帮助。

答案 1 :(得分:0)

ExtJS代理确实发送数据,但使用RAW POST。您可以使用以下功能获取它们:

function GetRAWdata()
{
    $result = NULL;
    if(function_exists('json_decode'))
    {
        $jsonData = json_decode(trim(file_get_contents('php://input')), true);
        $result = $jsonData['data'][0];
    }
    return $result;
}