2013-07-12 20 views
0

我使用ExtJS的和我做了使用的SOAPClient作爲這樣一個服務電話:ExtJS的 - 如何解析SOAP(WSDL)XML響應對象分爲模型

var url2 = "https://serviceUrlGoesHere/MyService"; 

var pl = new SOAPClientParameters();  
pl.add("arg0", false); 

SOAPClient.invoke(url2, "getPaymentsMethod", pl, true, getDataCallback); 

我的迴應方法:

function getDataCallback(response) { 
    ??? 
}; 

下面是服務響應:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <dlwmin:getPaymentsMethod xmlns:dlwmin="http://blahblah.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <return> 
      <contents> 
       <eftAcctNo>501014635986</eftAcctNo> 
       <eftAcctRoutNo>122400724</eftAcctRoutNo> 
      </contents> 
      <contents> 
       <eftAcctNo></eftAcctNo> 
       <eftAcctRoutNo></eftAcctRoutNo> 
      </contents> 
      <contents> 
       <eftAcctNo></eftAcctNo> 
       <eftAcctRoutNo></eftAcctRoutNo> 
      </contents> 
      <status>0</status> 
     </return> 
     </dlwmin:getPaymentsMethod> 
    </soapenv:Body> 
</soapenv:Envelope> 

我的問題是...我怎麼這個數據添加到模型中,並填充DataGrid?

+1

將XML Reader附加到您的商店,然後加載您的數據。 – Gregor

回答

0

這裏的答案是爲我工作:

var url2 = "https://serviceUrlGoesHere/MyService"; 

var pl = new SOAPClientParameters();  
pl.add("arg0", false); 

SOAPClient.invoke(url2, "getPaymentsMethod", pl, true, this.getDataCallback); 



getDataCallback: function (req, r) { 
    var store = Ext.getStore('STORENAMEHERE'); 
    store.loadRawData(r); 
    store.sync(); 
} 

通過執行loadRawData,它將數據加載到存儲,我的網格能夠成功加載數據。

0

下面是如何加載存儲,填充數據網格應該是在此之後很簡單,因爲你可以工作過的網站上的一個例子一個例子:

Ext.define("YourModel", { 
    extend: "Ext.data.Model", 
    fields: [ 
     {name:"eftAcctNo",  type:"int"}, 
     {name:"eftAcctRoutNo", type:"int"} 
    ] 
}); 

var store = Ext.create('Ext.data.Store', { 
    autoLoad: false, 
    model: 'YourModel', 
    proxy: { 
     type: 'memory', 
     reader: { 
      type: 'xml', 
      root: 'return' 
     } 
    } 
}); 

function getDataCallback(response) { 
    store.loadData(response.reponseText);// or just response if that is already text in your case 
}; 
+0

您想基於返回的數據中的內容動態創建商店和模型嗎? – Reimius

+0

我可以嘗試這種方式,但我也想知道如何動態。我感謝您的幫助。 – anad2312

+0

這是Extjs推薦的方式。基於返回的數據進行動態創建需要很多技巧才能完全準確。 – Reimius