Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > ExtJs и Store


Автор: virtualmacar 3.12.2009, 14:55
Дамы и Господа вопрос мой не сложен и не прост))) собственно есть 
Код

func = function() 
    {
      store.load({params: {"foo": Ext.get('grweek').dom.value}});
    
    }

Усё тут очевидно гружу я сторе который берет данные которые возвращает ему скрипт ПХП 
Как мне обработать ответ от PHP скрипта ? ПХП скрипт в случае успеха возвращает данные echo "Bla bla bla" а если ошибка то echo "Error"

Автор: comtat 3.12.2009, 15:21
Мой Вам совет используйте Ext.Ajax.request если ожидаете ответом простые данные
Для варианта со Ext.data.JsonStore можно сделать так 
Код

p_store = new Ext.data.JsonStore({
    root    : 'params',
    totalProperty: 'total',
    ...
    listeners: {
        'load': {
            fn: function(){
                _data = p_store.reader.jsonData;
                // Далее необходимая обработка
            }
        }
    },
    ...
}

Автор: virtualmacar 3.12.2009, 16:04
несколько другая ситуация у меня 
вот так описан store
Код

 var store = new Ext.data.Store({
        
        url: 'Ps/wektest.php',

      
        reader: new Ext.data.XmlReader({
           
               record: 'row',
               id: 'ASIN',
               totalRecords: '@total'
           }, [
           
               {name: 'row', mapping: 'ItemAttributes > row'},
               'p1', 'p2', 'p3','name_Farm','p4','p5','p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17','p18'
           ])
         
 
    });

а в PHP 
Код

......
$inputDom = new DomDocument();
$inputDom->validateOnParse = true;
$inputDom->loadXML($res);
......
echo $inputDom->saveXML(); Вот это выводит результат для XML Readera 


Т.е я не использую напрямую Json.. результат выполнения запроса это XML в виде текста которым я грид кормлю

Т.е когдя я загружаю Store я обращаюсь к PHP скрипту... всё получается.. но так как не давно на ExtJs не пойму ни как.. куда блин мне втулить 
Код

 success: function(){Ext.Msg.alert('Результат', 'Данные успешно получены');},
       failure : function(){Ext.Msg.alert('Результат', 'Извините сбой сиситемы попробуйте позже');}     


Автор: comtat 7.12.2009, 10:40
Это не особо принципиально
сам javascript скрипт
Код

<html>
<head>
    <link rel="stylesheet" type="text/css" href="resources/css/ext-all.css"/>
    <script type="text/javascript" src="ext-base.js"></script>
    <script type="text/javascript" src="ext-all.js"></script>
</head>
<body>
<script>
Ext.onReady(function(){
    var store = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({
            url    : 'ff.xml',
            method: 'GET'
        }),
        reader: new Ext.data.XmlReader({
            record    : 'row',
            totalRecords: 'results'
            }, ['id']
        ),
        listeners: {
            load    : function(store, records, options){
                if (store.dataLength == 0)
                    Ext.Msg.alert('Error', 'Извините сбой сиситемы попробуйте позже');
                else {
                    Ext.Msg.alert('Info', 'Данные успешно получены');
                }
            }
        }
    });
    store.load({params:{start:0, limit:25}});
});
</script>
</body>
</html>

ff.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
 <results>2</results>
 <row>
   <id>1</id>
   <name>Bill</name>
   <occupation>Gardener</occupation>
 </row>
 <row>
   <id>2</id>
   <name>Ben</name>
   <occupation>Horticulturalist</occupation>
 </row>
</dataset>


Вроде и все. Тестировал на v.2.3.0. 

Автор: Daphne 12.1.2012, 09:14
а что, если store.dataLength == 0 это значит произошел сбой?
а если у меня возвращается 0 строк и это не ошибка, а результат выполненного запроса?

делаю так
Код

store.load({
    params: {...},
    callback: function(success) {
        if (success) 
            Ext.MessageBox.show({
                title: 'Информация',
                msg: 'Данные успешно получены!',
                buttons: Ext.MessageBox.OK,
                icon: Ext.MessageBox.INFO
            })
        else Ext.MessageBox.show({
                title: 'Ошибка',
                msg: 'Cбой запроса попробуйте позже!',
                buttons: Ext.MessageBox.OK,
                icon: Ext.MessageBox.ERROR
            });
    }
});



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)