一次性将Extjs存储的所有记录发送到服务器

5
我要怎么样在一次 POST 请求中向服务器发送整个商店数据?可以使用 JSON 格式。
谢谢。
更新:
这是我的商店代码:
Ext.define('App.store.consultorio.Receita', {
    extend: 'Ext.data.Store',
    model: 'App.model.consultorio.Receita',
    autoLoad: false,
    proxy: {

        type: 'rest',
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json'
        },
        url: 'consultas/receita.json'
    }
});
1个回答

6
您可以将存储中的每个记录都设置为脏数据,然后调用sync()。
store.each(function(record){
    record.setDirty();
});

store.sync();

此外,您的商店正在使用RESTful代理,默认情况下不会批量处理操作。请参见http://docs.sencha.com/ext-js/4-2/#!/api/Ext.data.proxy.Rest-cfg-batchActions 您的商店应该如下所示:
Ext.define('App.store.consultorio.Receita', {
    extend: 'Ext.data.Store',
    model: 'App.model.consultorio.Receita',
    autoLoad: false,
    proxy: {

        type: 'rest',
        batchActions: true, //<------
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json'
        },
        url: 'consultas/receita.json'
    }
});

但这将为每个记录调用服务器方法。 - Beetlejuice
不,AJAX代理的默认设置是批处理相似类型的操作。请参阅:http://docs.sencha.com/ext-js/4-2/#!/api/Ext.data.proxy.Ajax-cfg-batchActions - James
这是结果: http://localhost:3000/consultas/receita.json/2?_dc=1365705540725http://localhost:3000/consultas/receita.json/3?_dc=1365705540836http://localhost:3000/consultas/receita.json/4?_dc=1365705540923 - Beetlejuice
似乎调用了三次相同的操作方法。 - Beetlejuice
你的商店代理是否配置为RESTful?如果您想获得更好的帮助,应该发布您的代码。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接