2010-10-30 5 views
3

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

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

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

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

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

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

+0

Я заметил одну проблему, которая у вас будет. В объекте полей JsonReader вы объявляете поле под названием «idProjet», но ваш сервер возвращает «projetId». Убедитесь, что они соответствуют желаемым результатам. – McStretch

+1

было ошибкой проблема не решена, я получаю магазин в порядке, я испытал с сеткой, в которой он работает! я все еще не могу использовать find() или любую функцию фильтра – cranberies

+0

В чем была проблема, из любопытства? – timdev

ответ

7

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

store.load({ 
    callback : function(r, options, success) { 
     console.log(r.data) 
    } 
}) 
1

Похоже, что сервер возвращает недействительный JSON. Почему начать выход вашего сценария на стороне сервера с «(»?

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

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

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

+0

нет его не то, что проблема, спасибо, я ожидаю больше ответов – cranberies

+0

нет проблемы в хранилище, которую она загружает, я могу связать ее с сеткой, я не знаю, где проблема, я не могу использовать методы хранилища для поиска записей – cranberies

Смежные вопросы