Проблема с выводом 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, время: 10:59. |