Получить записи из json store extjs - PullRequest
3 голосов
/ 31 октября 2010

У меня загружен магазин json, мне нужно извлечь из него одну запись.Я использовал: getAt(index), find(), getById(), но без результатов.Это мой код:

var appSettingReader = new Ext.data.JsonReader({     
                root: 'results',
              },[
                {name: 'id', type: 'int', mapping: 'id'},
                {name: 'projetId', type: 'int', mapping: 'projetId'},
                {name: 'resLevels', type: 'int', mapping: 'resLevels'},
                {name: 'maxResToLock',  type: 'int', mapping: 'maxResToLock'},
                {name: 'maxTimeToLock', type: 'int', mapping: 'maxTimeToLock'},
                {name: 'infosToPrint', type: 'string', mapping: 'infosToPrint'}
              ])

var appSettingStore = new Ext.data.Store({
                proxy: new Ext.data.HttpProxy({
                        url: 'inc/getSettings.php',
                        method: 'POST'
                    }),
                baseParams:{task: "app"}, 
                reader : appSettingReader,
                sortInfo:{field: 'id', direction: "DESC"}
               })

appSettingStore.load(); 

Этот код возврата не определен:

console.log(appSettingStore.getAt(0));

console.log(appSettingStore.find("id","1")); 

Это строка json, возвращенная с сервера:

{success:true,"results":[{"id":"1","projetId":"1","resLevels":"1","maxResToLock":"40","maxTimeToLock":"10","infosToPrint":"1_2_3_5","hotlineMail":"admin@app.com"}]}

Я такжепроверил этот код:

var records = new Array()       
var test = appSettingStore.each(function(rec){
            records.push(rec)
         })
console.log(records)

и я получил пустой массив!

PS: этот магазин не связан ни с одним компонентом;Я просто хочу читать и писать в него.

Ответы [ 2 ]

7 голосов
/ 22 апреля 2011

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

store.load({
    callback : function(r, options, success) {
        console.log(r.data)
    }
})
1 голос
/ 31 октября 2010

Похоже, сервер возвращает неверный JSON. Почему вывод вашего серверного скрипта начинается с "("?

Если на самом деле это не проблема, возможно, вам стоит подумать о принятии еще нескольких ответов на ваши вопросы. Люди с большей вероятностью помогут.

РЕДАКТИРОВАТЬ : Хорошо, так что вы вполне уверены, что получаете верный json с сервера. Попробуйте добавить свойство «success» к выводу вашего сервера.

Если это не сработает, попробуйте еще немного. Попробуйте добавить опцию обратного вызова в .load () вашего магазина и посмотрите, что передается в обратный вызов. Это должно помочь вам понять, где что-то идет не так.

...