2014-01-08 3 views
0

Загрузив файл с Ext.form.action.Submit(), я получаю результат возврата в XML.Сообщение об ошибке чтения ExtJS 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' 
}); 

Сообщение об ошибке говорится об Uncaught TypeError: Cannot read property 'prototype' of undefined в Reader.js

Любые идеи, как изменить XmlReader, что он принимает вышеупомянутый формат Xml и обеспечивает значения успеха и файлов ?

EDIT:

Я построил errorReader таким образом, что поднимается не более JS ошибки. Но все же я не нахожу, как получить доступ к моему обработчику.

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 
}, 

ответ

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); 
+0

Мне не нужен читатель для магазина. Мне нужно, чтобы читатель возвращал sth как «success: true», если true, или «success: false», если false. Какой ваш пример нет, и я не знаю, как добавить, извините. Кроме того, мой xml не имеет нескольких записей, только одно значение для возврата, которое находится в теге . – Alexander

Смежные вопросы