开发者

Attaching jsondata to the call of loading a jsonstore in Extjs via POST request

is there a way to attach jsondata to a POST request for loading a store? I know it's possible through a GET request by simply adding params : {data1 : 1, data2 : 2} on the load call, but I've had no success attaching jsondata. I've tried the following and a few variations of it and no luck. I'm using Extjs 2.2 w/ Alfresco

//creat开发者_Python百科e 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"    
            }
        }); 
    }


Instead of calling a store.load(), I created a function that would run an ajax request for the data. On a successfull callback, I would then load the store. Below is my code.

//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


You can do it this way.

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


The constructor for **HttpProxy** takes a connection object. And Connection object understands **jsonData**. So you can do this:

//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"    
            }
        }); 
    }


You can use baseParams: { key: "value", key2: "value2" }

This should work with the store using both GET and POST.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜