Dapatkan catatan dari json store extjs

Saya memiliki toko json yang dimuat, saya perlu mengambil satu catatan darinya. Saya menggunakan : getAt(index), find(), getById(), tetapi tidak ada hasil. Ini kode saya:

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(); 

Kode ini mengembalikan undefinisi :

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

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

Ini adalah string json yang dikembalikan dari server :

{success:true,"results":[{"id":"1","projetId":"1","resLevels":"1","maxResToLock":"40","maxTimeToLock":"10","infosToPrint":"1_2_3_5","hotlineMail":"[email protected]"}]}

Saya juga telah menguji kode ini:

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

dan saya mendapatkan array kosong!

PS : Penyimpanan ini tidak terikat pada komponen apa pun; Saya hanya ingin membaca dan menulisnya.


person cranberies    schedule 30.10.2010    source sumber
comment
Saya perhatikan satu masalah yang akan Anda alami. Di objek bidang JsonReader Anda mendeklarasikan bidang bernama idProjet, tetapi server Anda mengembalikan projetId. Pastikan itu cocok untuk mendapatkan hasil yang diinginkan.   -  person McStretch    schedule 31.10.2010
comment
itu adalah kesalahan, masalah tidak terselesaikan, saya memuat toko dengan baik. Saya telah menguji dengan kotak, itu berfungsi! saya masih tidak bisa menggunakan find() atau fungsi filter apa pun   -  person cranberies    schedule 31.10.2010
comment
Apa masalahnya, karena penasaran?   -  person timdev    schedule 31.10.2010
comment
masalahnya adalah toko memuat dengan baik, tetapi saya tidak dapat menggunakan metode seperti: find(), getById(), getAt()?   -  person cranberies    schedule 31.10.2010


Jawaban (2)


Anda perlu melakukan panggilan balik di toko, yang akan diaktifkan setelah dimuat. Anda kemudian dapat menggunakan data sesuai kebutuhan.

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

Tampaknya server mengembalikan JSON yang tidak valid. Mengapa keluaran skrip sisi server Anda dimulai dengan "("?

Jika sebenarnya bukan itu masalahnya, mungkin Anda harus mempertimbangkan untuk menerima lebih banyak jawaban atas pertanyaan Anda. Masyarakat akan lebih mungkin untuk membantu.

EDIT: Oke, jadi Anda cukup yakin mendapatkan kembali json yang valid dari server. Coba tambahkan properti 'sukses' ke keluaran server Anda.

Jika tidak berhasil, Anda sebaiknya menggali lebih dalam. Coba tambahkan opsi panggilan balik ke .load() toko Anda, dan lihat hal-hal yang diteruskan ke panggilan balik. Itu akan membantu Anda mengetahui di mana letak kesalahannya.

person timdev    schedule 30.10.2010
comment
bukan bukan itu masalahnya, terima kasih saya menunggu jawaban lebih lanjut - person cranberies; 31.10.2010
comment
tidak ada masalah di penyimpanan itu memuat dengan baik, saya dapat mengikatnya dengan grid saya tidak tahu di mana masalahnya, saya tidak dapat menggunakan metode penyimpanan untuk menemukan catatan - person cranberies; 31.10.2010