Проблема с выводом xml в грид
Делаю по этому примеру: http://deloy-dev.com/extJS_4.0/ext-4...ml-grid_1.html
Ext.require([ 'Ext.data.*', 'Ext.grid.*' ]); Ext.application({ name: 'name', launch: function() { Ext.define('Contacts',{ extend: 'Ext.data.Model', fields: [ 'id','mail','name' ] }); var store = Ext.create('Ext.data.Store', { model: 'Contacts', autoLoad: true, proxy: { type: 'ajax', url: 'http://localhost:8080/jersey/rest/contacts/', reader: { type: 'xml', record: 'contact', idProperty: 'id' } } }); var xmlGrid = Ext.create('Ext.grid.Panel', { store: store, columns: [ {text: "id",width:50, dataIndex: 'id', sortable: true}, {text: "mail",flex:1, dataIndex: 'mail', sortable: true}, {text: "name", width: 125, dataIndex: 'name', sortable: true} ], renderTo: Ext.getBody(), width: 550, height: 200 }); } }); В результате выводится пустой грид. xml по урл http://localhost:8080/jersey/rest/contacts/ в браузер выдаётся. Интересный момент: если в firebug посмотреть переменную store -свойство proxy - свойство reader, то видно следующее: Object { type="json", superclass={...}, config={...}, ещё...} Тип данных определён как json. Похоже на то, что причина в этом. Как это исправить? |
Ну, сложно сказать в чем проблема, не зная какой xml в ответе приходит. Насколько я понял вы используете rest-сервис. Укажите тогда type: 'rest' у proxy. Конечно проблема скорее всего не в этом, возможно вы неверно указали record или требуется указать root (в зависимости от структуры данных).
Цитата:
alert(store.getProxy().getReader().type); и проверьте. |
Кстати, в IE работает. И с type="rest" и c type="ajax". Не работает в FF и Хроме. Ну, хром это вообще отдельная история...
xml такой: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <contacts> <contact> <id>1</id> <mail>ivan@mail.ru</mail> <name>Ivanov</name> </contact> <contact> <id>2</id> <mail>peter@mail.ru</mail> <name>Petrov</name> </contact> </contacts> store.getProxy().getReader().type и в Firefox, и в IE возвращает xml. Указание root в Firefox не помогло, а в IE вызвало странный эффект - стала отображаться только одна запись из xml. |
Проверил в FF. указал свойства:
у прокси type: 'rest' у ридера: type: 'xml', record: 'contact', root: 'contacts', idProperty: 'id' Не вижу проблем, все отлично работает. |
Гм, мне сейчас пришла в голову светлая мысль - поместить папку с ExtJS-страницей на tomcat, на котором работает restful-сервис. И обращаться к ней, соответственно, через http://localhost:8080/
И всё заработало, во всех браузерах. До этого они находились, вроде как на разных хостах. Но это вроде не должно смущать, раз уж мы к веб-сервису обращаемся? |
Цитата:
request.setHeader("Access-Control-Allow-Origin", "domain.com"); |
Часовой пояс GMT +3, время: 16:43. |