2009-07-03 80 views
2

我不明白我做錯了什麼。extJS入門

我想從服務器的JSON字符串填充表單,它不起作用。我什麼也沒得到。我檢查對象並且它是未定義的。現在我已經在牆上撞了我的頭3天了。我需要一個簡單的例子,並且從那裏開始構建。

下面是簡單的例子,我一直在嘗試使用:

var messages = new Ext.data.JsonStore({ 
    url: '/user/' + user_id, 
    method: 'GET', 
    root: 'user', 
    fields: [ 
      {name: 'user_id'}, 
      {name: 'first_name'} 
    ], 
    listeners: { 
     load: messagesLoaded 
    } 
}); 

messages.load(); 

function messagesLoaded(messages) { 
    console.log(messages); 
} 

這裏是我的JSON字符串:

{"success":"true","user":{"user_id":"2","first_name":"Test","last_name":"Test","email":null,"password":null,"city_id":"6379","birth_date":"2009-06-09","gender":"F","created_on":"2009-06-01 17:21:07","updated_on":"2009-06-14 17:20:14","active":"Y","cuisine_id":null}} 

我真不明白我在做什麼錯,但我的JSON字符串未加載。謝謝!

+0

當您查看XMLHttpRequest時,Fiddler或Firefox會說些什麼? – epascarello 2009-07-03 03:00:48

回答

4

好吧所以你差不多那裏,但一個問題。 (在這種情況下爲「用戶」)具有爲數組。即使它只有一個對象的數組。 Ext.data.JsonReader(默認閱讀器Ext.data.JsonStore)只接受一組結果。

所以你的javascript看起來很好,但服務器返回的JSON對象需要看起來更像這樣。

{ 
    "success":"true", 
    "user": [{ 
     "user_id":"2", 
     "first_name":"Test", 
     "last_name":"Test", 
     "email":null, 
     "password":null, 
     "city_id":"6379", 
     "birth_date":"2009-06-09", 
     "gender":"F", 
     "created_on":"2009-06-01 17:21:07", 
     "updated_on":"2009-06-14 17:20:14", 
     "active":"Y", 
     "cuisine_id":null 
    }] 
} 
+0

謝謝 - 這是我的問題。我將「用戶」標籤更改爲「數據」,並從我的代碼中刪除了根目錄,並且工作正常。慢慢地,但肯定我正在弄清楚這一點。 – jeffkolez 2009-07-03 16:06:18

2

一件事,你consoloe.logging存儲對象會產生類似[對象]螢火蟲......沒有太大的用處。你應該使用console.dir,或者記錄你的實際數據。

關於加載您的表單的一個註釋,一旦你過去加載你的JSON(即使這個例子沒有顯示)。確保您的表單在嘗試加載數據之前實際呈現,例如如果試圖使用類似form.loadRecord的東西。否則,你最終會得到一個空的表單並且沒有錯誤。

+0

...每天都有新的東西。只要螢火蟲讓我......甚至不知道console.dir在那裏......輝煌,我一直在愉快地使用console.log。謝謝! – OhkaBaka 2009-08-17 23:37:09