Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Данные из REST , ExtJS (https://javascript.ru/forum/extjs/22252-dannye-iz-rest-extjs.html)

selections 12.10.2011 14:54

Данные из REST , ExtJS
 
Начну с того что крикну...ПОМОГИТЕ!:help:

Через Rest (а именно : "http://192.168.1.119:1008/srv/adres/test/Hello") получаю данные в виде xml. Если вставить данную строку в браузер то получаю:

<XMLDataResponse xmlns="http://tempuri.org/">
<XMLDataResult>enter Hello world msf</XMLDataResult>
</XMLDataResponse>

Написал ExtJs скрипт который должен цеплять "enter Hello world msf" из этой xml. НО! Он этого не делает и возвращает пустоту. Что я делаю не так?
Вот скрипт:
//connection
		
        var proxy1 = new Ext.data.HttpProxy({
        url: "http://192.168.1.119:1008/srv/adres/test/Hello"
        });
		
		//record
		var Employee = Ext.data.Record.create([
        {name: 'XMLDataResult', mapping: 'XMLDataResult'}     // "mapping" property not needed if it is the same as "name"        
                                              ]);
		
		//reader
		var reader1 = new Ext.data.XmlReader ({
		record: "XMLDataResult "},Employee );
		
		//хранилеще данных
		var store = new Ext.data.Store({
        restful: true, // Это наш волшебный флажок, который заставляет слать запросы на сервер при изменение данных в источнике 
        proxy: proxy1,         
        reader:reader1 
         });
		 
		 try{
		 // Получить данные GET
          store.load();
		  }
		  catch(err) {alert("Error nah!")}
		  		  		  		  		  		  		  		 
		  //отобпразить
		  Ext.onReady(function(){ 
		  alert(store.getCount());
		  });
		  
		 

// Создадим структуру колонок нашей таблицы
var userColumns =  [
    {header: "XMLDataResult", width: 150, sortable: true, dataIndex: 'XMLDataResult'},
];
Ext.onReady(function(){
// Теперь создадим нашу таблицу и настроим ее.
 var userGrid = new Ext.grid.GridPanel({
    renderTo: Ext.getBody(),
    iconCls: 'icon-grid',
    frame: true,
    title: 'Пользователи',
    autoScroll: true,
    height: 300,
    store: store,    
    columns : userColumns,
    viewConfig: {
        forceFit: true
    }
});
});

DreamTheater 12.10.2011 22:04

http://docs.sencha.com/ext-js/4-0/#!/guide/data

selections 16.10.2011 16:53

Воспользовавшись документацией Sencha (http://edspencer.net/2011/02/proxies-extjs-4.html) нашел такой пример:
var User = Ext.regModel('User', {
    fields: ['id', 'name', 'email'],

    proxy: {
        type: 'rest',
        url : '/users',
        reader: {
            type: 'json',
            root: 'users'
        }
    }
});


Если вместо url вставлять адрес "http://**********/Hello" (это мой REST сервис, если эту строчку вставить в браузер, он вернет Hello), то скрипт не работает. В FireBag пишет что коннект по данному url aborded.

Есть идеи как решить данную проблему?
И на что ссылается url из примера?

DreamTheater 16.10.2011 17:04

Вероятно Ваш рест сервис ожидает обращение к адресу не GETом. В примере относительная ссылка.

selections 16.10.2011 17:22

Цитата:

Сообщение от DreamTheater (Сообщение 131442)
Вероятно Ваш рест сервис ожидает обращение к адресу не GETом.

Этот сервис писал не я и, к сожалению, сейчас посмотреть его код не могу. Могу сказать что он реализован на С#.

Можете подробнее изложить свои мысли?

Цитата:

Сообщение от DreamTheater (Сообщение 131442)
В примере относительная ссылка.

Это значит что сервис реализован где в папке users? и можно использовать напрямую http адрес? Вот это меня волнует.

DreamTheater 16.10.2011 18:27

RESTful веб-службы

selections 16.10.2011 22:50

Спасибо! Это описание весьма полезно, буду завтра смотреть саму реализацию сервиса.

selections 17.10.2011 13:02

Пришел к выводу, что в url адрес http напрямую задать нельзя, нужен "кормящий файл" - вот его адрес и задается в url. Кто может подсказать как его написать?


Часовой пояс GMT +3, время: 22:39.