รับบันทึกจาก json store 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(); 

รหัสนี้ส่งคืนไม่ได้กำหนด:

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 ที่ไม่ถูกต้อง เหตุใดเอาต์พุตของสคริปต์ฝั่งเซิร์ฟเวอร์ของคุณจึงขึ้นต้นด้วย "("?

หากนั่นไม่ใช่ปัญหาจริงๆ คุณควรพิจารณายอมรับคำตอบเพิ่มเติมสำหรับคำถามของคุณ คนจะได้มีโอกาสช่วยเหลือมากขึ้น

แก้ไข: เอาล่ะ คุณค่อนข้างแน่ใจว่าคุณได้รับ json ที่ถูกต้องกลับมาจากเซิร์ฟเวอร์ ลองเพิ่มคุณสมบัติ 'ความสำเร็จ' ให้กับผลลัพธ์ของเซิร์ฟเวอร์ของคุณ

หากไม่ได้ผล คุณจะต้องขุดลึกลงไปอีกสักหน่อย ลองเพิ่มตัวเลือกการติดต่อกลับลงใน .load() ของร้านค้าของคุณ และดูสิ่งที่ถูกส่งผ่านไปยังการติดต่อกลับ นั่นจะช่วยให้คุณทราบว่ามีอะไรผิดพลาดเกิดขึ้นบ้าง

person timdev    schedule 30.10.2010
comment
ไม่มันไม่ใช่ปัญหา ขอบคุณ ฉันกำลังรอคำตอบเพิ่มเติม - person cranberies; 31.10.2010
comment
ไม่มีปัญหาในสตอเรจที่โหลดได้ดี ฉันสามารถผูกมันเข้ากับกริดได้ ฉันไม่รู้ว่าปัญหาอยู่ที่ไหน ฉันไม่สามารถใช้วิธีการจัดเก็บเพื่อค้นหาบันทึกได้ - person cranberies; 31.10.2010