将jsondata附加到通过POST请求在Extjs中加载jsonstore的调用

时间:2009-12-31 22:12:53

标签: javascript json extjs httpwebrequest

有没有办法将jsondata附加到POST请求以加载商店?我知道通过GET请求可以在加载调用中添加 params:{data1:1,data2:2} ,但是我没有成功附加jsondata。我尝试过以下几种变体而没有运气。我正在使用Extjs 2.2 w / Alfresco

//create store
        var memberStore = new Ext.data.JsonStore({
            proxy : new Ext.data.HttpProxy({
                url : url/getMembers,
                method : 'POST'
            }),
            fields : ['username'],
            root : 'members'
        });

//function that loads store when it is called
    function getMembers() {

        memberStore.load({
            //params : {action : "getmembers", groupname : "GROUP_Test"}
            jsonData : {
                action : "getmembers",
                groupname : "GROUP_Test"    
            }
        }); 
    }

4 个答案:

答案 0 :(得分:2)

我没有调用store.load(),而是创建了一个运行数据的ajax请求的函数。在成功的回调中,我会加载商店。以下是我的代码。

//create store
var memberStore = new Ext.data.JsonStore({
        fields : ['username'],
        root : 'members'
    });

//function that loads store when it is called 
function getMembers() {

    var parameters = {
       node : dynamicNodeId  
    }

    Ext.Ajax.Request({
      url : 'url/getMembers',
      method : 'POST',
      jsonData : Ext.encode(parameters),
      success : function(response, opts) {
        //decode json string
        var responseData = Ext.decode(response.responseText);

        //Load store from here
        memberStore.loadData(responseData);
      }
  }); 

}//eo getMembers

答案 1 :(得分:2)

你可以这样做。

Ext.apply(store.baseParams, { param1: '1', param2: '2'});       
Ext.apply(store.proxy.conn, { jsonData: { data1: 'data1', data2: 'data2'} });
store.load();

答案 2 :(得分:2)

**HttpProxy**的构造函数接受一个连接对象。 Connection对象理解**jsonData**。所以你可以这样做:

//create store
        var memberStore = new Ext.data.JsonStore({
            proxy : new Ext.data.HttpProxy({
                url : url/getMembers,
                method : 'POST',
                //here is the change
                jsonData: {data1 : 1, data2 : 2}
            }),
            fields : ['username'],
            root : 'members'
        });

//function that loads store when it is called
    function getMembers() {

        memberStore.load({
            //params : {action : "getmembers", groupname : "GROUP_Test"}
            jsonData : {
                action : "getmembers",
                groupname : "GROUP_Test"    
            }
        }); 
    }

答案 3 :(得分:1)

您可以使用baseParams:{key:“value”,key2:“value2”}

这应该与使用GET和POST的商店一起使用。