C# 使用Sencha 2使用ASMX服务
我刚开始学僧茶 我有一个asmx,它返回一个列表,使xml看起来像C# 使用Sencha 2使用ASMX服务,c#,asmx,extjs,sencha-touch-2,C#,Asmx,Extjs,Sencha Touch 2,我刚开始学僧茶 我有一个asmx,它返回一个列表,使xml看起来像 <Result> <string>One</string> <string>Two><string> </Results> Ext.define('ListItem', { extend: 'Ext.data.Model', config: { fields: ['text'] } }); var t
<Result>
<string>One</string>
<string>Two><string>
</Results>
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!'
}
});
}
});
但是我得到一个带有标题栏的空列表,标题栏也是空的。使用.Asmx,您还可以将xml绑定到树存储库 下面是可能对您有所帮助的代码
function BindData(dataxml)
{
dataxml = dataxml.replace(/>/g, ">");
dataxml = dataxml.replace(/</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]});
}
}
愚蠢的问题首先,你是否用Wireshark/Fiddler进行了基本的故障排除,以证明响应实际上是你所认为的?我得到的响应不是我所期望的不。似乎出于某种原因,asmx的结果总是以xml形式出现。我想要json,但我在一些测试中得到了{'stringlist':[{'value':'first'},{'value':'second'},{'value':'third'}]}。自从ASMX贬值以来,我已经有一段时间没有使用它了,但我很确定它只支持XML重新编辑注释:查看JSON.NET,将对象序列化为JSON。