使用Ext.form.action.Submit()上传文件后,我以XML格式获得返回结果。
<KeyValuePairOfbooleanstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
<key>true</key>
<value>path/to/filename.ext</value>
</KeyValuePairOfbooleanstring>
所以我试过
form.errorReader = Ext.create('Ext.data.reader.Xml', {
success: 'key',
file : 'value'
});
错误消息在Reader.js中显示Uncaught TypeError: Cannot read property 'prototype' of undefined
如何更改XmlReader以接受上述Xml格式并提供成功和文件值的任何想法?
编辑:
我以不会引发更多js错误的方式构建了errorReader。但我仍然没有找到如何访问我的成功处理程序。
form.errorReader = Ext.create('Ext.data.reader.Xml', {
record : 'KeyValuePairOfbooleanstring',
success: 'key',
result: 'value',
model: {
prototype: {
fields:['value']
}
}
});
并取得成功:
success: function(fp, o) {
alert(o.result); // object object
alert(Object.keys(o.result).join(',')); // success,errors
Ext.getCmp("companyLogo").setSrc=o.result; // does nothing
Ext.Msg.alert('Success', 'Processed file "' + o.response.responseXml + '" on the server'); // undefined
},
答案 0 :(得分:1)
我不确定你是如何特别回到xml的。但是,读者能够在下面的示例中解析xml。这是我的工作代码,我在console.log()中解析了数据。
var xml = '<KeyValuePairOfbooleanstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/System.Collections.Generic"><key>true</key><value>path/to/filename.ext</value></KeyValuePairOfbooleanstring>';
var doc = new DOMParser().parseFromString(xml, 'text/xml');
Ext.define('MyModel', {
extend:'Ext.data.Model',
fields: [{
name: 'key',
type:'auto'
}, {
name: 'value',
type:'auto'
}]
});
var s = Ext.create('Ext.data.Store', {
autoLoad: true,
data: doc,
model:'MyModel',
proxy: {
type: 'memory',
reader: {
type: 'xml',
record: 'KeyValuePairOfbooleanstring'
}
}
});
console.log(s.data.items[0].data);