2010-10-30 136 views
3

我有一個json商店加載,我需要從它抓取一條記錄。 我用過:getAt(index)find(),getById(),但沒有結果。 這是我的代碼:從json商店獲取記錄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(); 

此代碼返回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:本店未綁定任何組件; 我只想讀取和寫入它。

+0

我注意到你會遇到一個問題。在你的JsonReader的字段對象中聲明一個名爲「idProjet」的字段,但是你的服務器返回「projetId」。確保這些匹配以獲得期望的結果。 – McStretch 2010-10-31 01:33:26

+1

這是一個錯誤,問題沒有解決,我得到了商店罰款我已經測試了一個網格它的工作!我仍然無法使用find()或任何過濾器函數 – cranberies 2010-10-31 02:42:37

+0

出於好奇,問題是什麼? – timdev 2010-10-31 02:47:27

回答

7

您需要在商店上放置一個回調,該回調將在加載後觸發。然後您可以根據需要使用這些數據。

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

看來服務器正在返回無效的JSON。爲什麼你的服務器端腳本的輸出開始「(」?

如果這實際上是沒有問題的,也許你應該考慮接受一些問題的答案,人們會更容易幫助。

編輯:好吧,所以你很確定你從服務器獲得有效的JSON。嘗試添加一個'成功'屬性到你的服務器的輸出。

如果這不起作用,你會想嘗試在商店的.load()中添加一個回調選項,並查看傳入回調函數的內容,這可以幫助您找出問題出在哪裏。

+0

不,它不是問題,謝謝亞姆等待更多的答案 – cranberies 2010-10-30 23:19:46

+0

存儲沒有問題它加載罰款,我可以綁定它與網格我不知道問題在哪裏,我不能使用存儲方法來查找記錄 – cranberies 2010-10-31 02:47:54