2012-03-30 120 views
0

我剛開始學習Sencha。使用Sencha 2消耗ASMX服務

我有一個asmx,返回一個List,所以XML看起來像;

<Result> 
    <string>One</string> 
    <string>Two><string> 
</Results> 

現在我想要做的就是在列表中顯示。

所以我的Sench代碼看起來像;

Ext.define('ListItem', { 
    extend: 'Ext.data.Model', 
    config: { 
     fields: ['text'] 
    } 
}); 

var treeStore = Ext.create('Ext.data.TreeStore', { 
    model: 'ListItem', 
    defaultRootProperty: 'items', 
    proxy: { 
     type: 'ajax', 
     url: 'http://localhost:81/MyASMX.asmx/Test' 
    } 
}); 


Ext.application({ 
    name: 'Sencha', 

    launch: function() { 
     Ext.create('Ext.NestedList', { 
      fullscreen: true, 
      store: treeStore, 
      detailCard: { 
       html: 'You are viewing the detail card!' 
      } 
     }); 
    } 
}); 

但我得到一個空的列表,標題欄也是空的。

+0

愚蠢的問題第一,你做了基本的故障排除使用Wireshark /小提琴手證明響應實際上你認爲它是什麼? – 2012-03-30 00:17:22

+0

我得到的迴應並不是我所期待的。似乎由於某種原因,asmx的結果總是在xml中。我想json,但我得到「{'stringlist':[{'value':'first'},{'value':'second'},{'value':'third'}]}」 on some測試 – griegs 2012-03-30 00:25:01

+0

自從我使用ASMX以來已經有一段時間了(因爲它已被折舊),但我確信它只支持XML。 - 重新編輯你的評論:看看JSON.NET將你的對象序列化爲JSON。 – 2012-03-30 00:25:54

回答

0

隨着.ASMX你也可以XML綁定到你的treestore 這裏是代碼,可能會幫助你

function BindData(dataxml) 
{ 

    dataxml = dataxml.replace(/&gt;/g, ">"); 
    dataxml = dataxml.replace(/&lt;/g, "<"); 
    var doc; 
    if (window.ActiveXObject) {   //IE 
    var doc = new ActiveXObject("Microsoft.XMLDOM"); 
    doc.async = "false"; 
    doc.loadXML(dataxml); 
    } else {        //Mozilla 
    var doc = new DOMParser().parseFromString(dataxml, "text/xml"); 
    } 
    var store = new Ext.getStore('treestore'); 
    store.removeAll(); 
    var DataLen = doc.getElementsByTagName('FirstNode').length; 
    for (var i = 0; i < DataLen; i++) { 
    var arrnodename = doc.getElementsByTagName('nodeName')[i].firstChild.nodeValue.replace(/\"/g, ''); 
    var arrnodename2 = doc.getElementsByTagName('nodeName2')[i].firstChild.nodeValue.replace(/\"/g, ''); 
    store.add({ C1: arrnodename[0], C2: arrnodename2[0]}); 
    } 
}