#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. Спасибо за ответ, я использовал подобное, но без какого-либо результата он не сохраняет никакого значения. Есть ли какой-либо другой способ сделать это