Получить записи из магазина json extjs

У меня загружен магазин 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(); 

Этот код возвращает undefined :

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":"[email protected]"}]}

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

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

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

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


person cranberies    schedule 30.10.2010    source источник
comment
Я заметил одну проблему, которая у вас будет. В вашем объекте полей JsonReader вы объявляете поле с именем idProjet, но ваш сервер возвращает projetId. Убедитесь, что они совпадают, чтобы получить желаемые результаты.   -  person McStretch    schedule 31.10.2010
comment
это была ошибка, проблема не решена, у меня нормально загружается магазин, я тестировал с сеткой, она работает! я все еще не могу использовать find() или любую функцию фильтра   -  person cranberies    schedule 31.10.2010
comment
В чем проблема, из любопытства?   -  person timdev    schedule 31.10.2010
comment
проблема в том, что магазин загружается нормально, но я не могу использовать такие методы, как: find(), getById(), getAt()?   -  person cranberies    schedule 31.10.2010


Ответы (2)


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

store.load({
    callback : function(r, options, success) {
        console.log(r.data)
    }
})
person Mark    schedule 22.04.2011

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

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

EDIT: Итак, вы уверены, что получаете правильный json с сервера. Попробуйте добавить свойство «успех» к выходным данным вашего сервера.

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

person timdev    schedule 30.10.2010
comment
нет, проблема не в этом, спасибо, я жду больше ответов - person cranberies; 31.10.2010
comment
в магазине нет проблем, он загружается нормально, я могу связать его с сеткой, я не знаю, в чем проблема, я не могу использовать методы хранения для поиска записей - person cranberies; 31.10.2010