Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过POST请求将jsondata附加到Extjs中加载jsonstore的调用_Javascript_Json_Extjs_Httpwebrequest - Fatal编程技术网

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

Javascript 通过POST请求将jsondata附加到Extjs中加载jsonstore的调用,javascript,json,extjs,httpwebrequest,Javascript,Json,Extjs,Httpwebrequest,是否有方法将jsondata附加到POST请求以加载存储?我知道,通过GET请求,只需在load调用中添加参数:{data1:1,data2:2}是可能的,但是我没有成功地附加jsondata。我试过下面的和它的一些变化,但没有运气。我正在使用extjs2.2 w/Alfresco //create store var memberStore = new Ext.data.JsonStore({ proxy : new Ext.data.HttpProxy

是否有方法将jsondata附加到POST请求以加载存储?我知道,通过GET请求,只需在load调用中添加参数:{data1:1,data2:2}是可能的,但是我没有成功地附加jsondata。我试过下面的和它的一些变化,但没有运气。我正在使用extjs2.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"    
            }
        }); 
    }

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


这应该与使用GET和POST的存储一起使用。

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


这应该与使用GET和POST的store一起工作。

我创建了一个函数来运行数据的ajax请求,而不是调用store.load。在成功回调时,我将加载存储。下面是我的代码

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

我没有调用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

你可以这样做

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

你可以这样做

Ext.apply(store.baseParams, { param1: '1', param2: '2'});       
Ext.apply(store.proxy.conn, { jsonData: { data1: 'data1', data2: 'data2'} });
store.load();
**HttpProxy**的构造函数接受一个连接对象。连接对象理解**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"    
            }
        }); 
    }
**HttpProxy**的构造函数接受一个连接对象。连接对象理解**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"    
            }
        }); 
    }

嗨,胡安,很抱歉这么晚才回复。不幸的是,baseParams不适用于我,因为参数会发生变化。我最后做的就是创建一个运行Ajax请求Ext.Ajax.Request{}并在成功返回时加载存储。哦,我明白了。。那是一个重要的细节。。很高兴你找到了解决方案:嗨,胡安,再次感谢你的回复,按照要求,我已经发布了我的解决方案。干杯嗨,胡安,很抱歉这么晚才回复。不幸的是,baseParams不适用于我,因为参数会发生变化。我最后做的就是创建一个运行Ajax请求Ext.Ajax.Request{}并在成功返回时加载存储。哦,我明白了。。那是一个重要的细节。。很高兴你找到了解决方案:嗨,胡安,再次感谢你的回复,按照要求,我已经发布了我的解决方案。干杯