2013-08-16 20 views
0

我遇到了ExtJS 4.2中的問題,即store.load()方法不會從服務器加載數據,只能檢索json。 我JS/itfx /資源/ genres.json文件:ExtJS:store.load()不加載數據

[{"name":"Action & Adventure","code":"ACTION-ADVENTURE-00"},{"name":"African","code":"AFRICAN-00"},{"name":"Anime","code":"ANIME-00"},{"name":"Bollywood","code":"BOLLYWOOD-00"},{"name":"Classics","code":"CLASSICS-00"},{"name":"Comedy","code":"COMEDY-00"},{"name":"Concert Films","code":"CONCERT-FILMS-00"},{"name":"Documentary","code":"DOCUMENTARY-00"},{"name":"Drama","code":"DRAMA-00"},{"name":"Foreign","code":"FOREIGN-00"},{"name":"Holiday","code":"HOLIDAY-00"},{"name":"Horror","code":"HORROR-00"},{"name":"Independent","code":"INDEPENDENT-00"},{"name":"Kids & Family","code":"KIDS-FAMILY-00"},{"name":"Made for TV","code":"MADE-FOR-TV-00"},{"name":"Middle Eastern","code":"MIDDLE-EASTERN-00"},{"name":"Music Documentaries","code":"MUSIC-DOCUMENTARIES-00"},{"name":"Music Feature Film","code":"MUSIC-FEATURE-FILMS-00"},{"name":"Musicals","code":"MUSICALS-00"},{"name":"Regional Indian","code":"REGIONAL-INDIAN-00"},{"name":"Romance","code":"ROMANCE-00"},{"name":"Russian","code":"RUSSIAN-00"},{"name":"Sci-Fi & Fantasy","code":"SCIFI-FANTASY-00"},{"name":"Short Films","code":"SHORT-FILMS-00"},{"name":"Special Interest","code":"SPECIAL-INTEREST-00"},{"name":"Sports","code":"SPORTS-00"},{"name":"Thriller","code":"THRILLER-00"},{"name":"Turkish","code":"TURKISH-00"},{"name":"Urban","code":"URBAN-00"},{"name":"Western","code":"WESTERN-00"}] 

我的模型:

Ext.define('ITFX.model.films.info.FilmGenre', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'name', type: 'string'}, 
     {name: 'code', type: 'string'} 
    ] 
}); 

我的店:

Ext.define('ITFX.store.films.info.FilmGenre', { 
    extend: 'Ext.data.Store', 

    model: 'ITFX.model.films.info.FilmGenre', 

    proxy: { 
     type: 'ajax', 
     url : 'js/itfx/resources/genres.json', 
     reader: { 
      type: 'json' 
     } 
    } 
}); 

於是,經過執行代碼abowe:

var allFilmGenresStore = Ext.create('ITFX.store.films.info.FilmGenre'); 
allFilmGenresStore.load(); 

方法

allFilmGenresStore.getCount(); //0 
allFilmGenresStore.getTotalCount(); //0 

將返回,那家商店都沒有加載 我做錯了什麼? 在此先感謝

+0

在Chrome開發者工具的任何錯誤安慰?如果您在Chrome開發人員工具中查看XHR請求,您是否看到實際的ajax請求發生? – bakamike

+1

您是否在等待數據完成的調用? Ajax是異步的,並且不能在allFilmGenresStore.load()之後運行allFilmGenresStore.getCount(),因爲數據可能尚未從服務器返回。 – Reimius

回答

0

是的,感謝您的協助,潰敗的原因是,存儲數據異步加載。代碼加載數據,應該是:

allFilmGenresStore.load({ 
    callback : function(records, options, success) { 
     // some custom logik 
    } 
}); 
+0

您還可以在商店「加載」事件中添加監聽器,以對數據執行某些操作。 – dbrin

0

你必須改變讀者

reader: { 
      type: 'json', 
      root: 'root' 
     } 

,併發送json_encode('root' => $data);

我希望它會幫助你