2009-07-03 11 views
2

私が間違っていることはありません。extJSを使い始める

サーバーからのJSON文字列からフォームを取り込もうとしていますが、動作しません。私は何も得ていない。私はオブジェクトを調べ、それは未定義です。私は3日間頭を頭に打ちました。私は働く簡単な例が必要で、そこからビルドします。私は本当に私が間違ってやっているものを見ていない

{"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}} 

、しかし:

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文字列です:ここで

は、私が使用しようとしてきた簡単な例です。私のJSON文字列がロードされていません。ありがとう!

+0

XMLHttpRequestを見ると、FiddlerやFirefoxは何を言っていますか? – epascarello

答えて

4

あなたはです。ほぼですが、問題は1つです。 ルート(この場合は「user」)には、配列としてがあります。オブジェクトが1つしかない配列でもExt.data.JsonReaderExt.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

ありがとうございました - それは私の問題でした。私は "user"タグを "data"に変更し、自分のコードからルートを削除していました。ゆっくりとしかし確かに私はこれを考え出している。 – jeffkolez

2

さらにもう1つ、consoloe.loggingストアオブジェクトはFirebugの[Object]のようなものを生成します...あまり役に立ちません。それをconsole.dirにするか、代わりに実際のデータを記録する必要があります。

JSONの読み込みが完了すると、フォームの読み込みについてのコメントが1つあります(この例では表示されません)。データを読み込む前にフォームが実際にレンダリングされていることを確認してください。 form.loadRecordのようなものを使用しようとすると。そうしないと、空のフォームとエラーは発生しません。

+0

...毎日何か新しい。私は、火かき棒が私にさせてくれた限り、console.logを喜んで使ってきました...コンソールも知っていませんでした。ありがとう! – OhkaBaka