sencha touch — как прочитать множественный объект json (ответ ajax) в initcomponent панели

#ajax #json #sencha-touch #storage #iteration

#ajax #json #sencha-touch #Хранение #итерация

Вопрос:

Необходимо прочитать множественный объект json, который получил запрос формы ajax. Я использовал приведенный ниже код. Это занимает слишком много времени. таким образом, другие коды выполняются до этого кода.

 var allVisitStore =  new Ext.data.Store({ 
model: 'allVisit',
autoLoad : true,
proxy: {
    type: 'ajax',
    id: 'allvisit_app_localstore',
    url: '/RadMobApp/api',
    extraParams:{          
        action:'test',
        queryName:'GET_ALL_TEST',
        username:'1234',
        password:'1234',
        retFormat:'XML',
        patTicketId: '4098'
        keyValuePair:'yes'
    },
    // the return will be XML, so lets set up a reader
    reader: new Ext.data.XmlReader({
        // records will have an "T4" tag
        record: 'data'
    })
}
  

});

есть ли какой-либо альтернативный метод для вышеуказанного

Ответ №1:

Все запросы Ajax в Sencha Touch и, действительно, ExtJS являются асинхронными. Вам нужно делать все, что вам нужно, при загрузке хранилища

Прослушайте событие загрузки хранилища, а затем продолжите обработку.

Вы можете добавить прослушиватель в конфигурацию хранилища следующим образом:

 var allVisitStore =  new Ext.data.Store({ 
model: 'allVisit',
autoLoad : true,
proxy: {
    type: 'ajax',
    id: 'allvisit_app_localstore',
    url: '/RadMobApp/api',
    extraParams:{          
        action:'query',
        queryName:'GET_ALL_VISIT',
        username:'superuser',
        password:'superuser',
        retFormat:'XML',
        patTicketId: 'PAT-4098'
        keyValuePair:'yes'
    },
    // the return will be XML, so lets set up a reader
    reader: new Ext.data.XmlReader({
        // records will have an "T4" tag
        record: 'data'
    }),
    listeners : {
        'load' : function(){

            // call code here that should be run when the data has returned

        }
    }
}
  

Или как это:

 allVisitStore.on('load',function(){
// call code here that should be run when the data has returned
  

});

Комментарии:

1. Спасибо за ответ, я использовал подобное, но без какого-либо результата он не сохраняет никакого значения. Есть ли какой-либо другой способ сделать это