Javascript 通过POST请求将jsondata附加到Extjs中加载jsonstore的调用
是否有方法将jsondata附加到POST请求以加载存储?我知道,通过GET请求,只需在load调用中添加参数:{data1:1,data2:2}是可能的,但是我没有成功地附加jsondata。我试过下面的和它的一些变化,但没有运气。我正在使用extjs2.2 w/AlfrescoJavascript 通过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
//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{}并在成功返回时加载存储。哦,我明白了。。那是一个重要的细节。。很高兴你找到了解决方案:嗨,胡安,再次感谢你的回复,按照要求,我已经发布了我的解决方案。干杯