2009-12-31 85 views
1

有沒有辦法將jsondata附加到加載商店的POST請求?我知道通過簡單地在加載調用中添加params:{data1:1,data2:2}可以通過GET請求,但是我沒有成功附加jsondata。我已經嘗試了以下和它的一些變化,沒有運氣。我使用ExtJS的2.2瓦特/露天將jsondata附加到通過POST請求在Extjs中加載jsonstore的調用

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

回答

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

您可以使用baseParams:{鍵: 「值」,KEY2: 「值2」}

這應該與商店使用GET和POST工作。

+0

喜娟, 對不起:所以,你可以做到這一點。不幸的是,baseParams不適合我,因爲參數會改變。我最終做的只是創建運行一個Ajax請求(Ext.Ajax.Request({}))並加載成功返回的商店。 – Snowright 2010-01-23 00:14:47

+0

哦,我明白了..這是一個重要的細節.. 很高興你找到了解決方案:) – SuitedSloth 2010-01-23 17:15:40

+0

你可以發佈一個答案給你自己的問題嗎? thx :) – SuitedSloth 2010-01-23 17:16:13

2

你可以這樣做。

Ext.apply(store.baseParams, { param1: '1', param2: '2'});  
Ext.apply(store.proxy.conn, { jsonData: { data1: 'data1', data2: 'data2'} }); 
store.load(); 
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"  
      } 
     }); 
    }