我想從這裏得到server.And JSON是Django的服務器視圖功能:爲什麼我無法從ExtJs4中的服務器獲取JSON?
def showChart(request):
data = [{"id":1, "name":"Tom", "email":"[email protected]"}, {"id":2, "name":"Bosh", "email":"[email protected]"}]
return HttpResponse(json.dumps(data), mimetype="application/json");
顯然,showChart()將返回一個JSON。
我的前端extjs4代碼:
Ext.onReady(function() {
Ext.define('ProductionInfo', {
extend: 'Ext.data.Model',
fields: ['email', 'id', 'name']
});
var store_new = Ext.create('Ext.data.Store', {
model: 'ProductionInfo',
proxy: {
type: 'ajax',
url : 'http://localhost:8000/production_data',
reader: {
type: 'json'
}
}
});
store_new.load();
alert(store_new.getCount());
});
但提示對話框顯示'0',而正確的答案是'2'。那麼爲什麼我無法從服務器獲取JSON? (我可以通過Chorme和Firefox中的GET請求獲得正確的JSON)
這家店異步加載,所以還是加載時調用'getCount'方法(從而得到返回值爲0)。如果要執行加載完成後發生的某些邏輯,則需要將監聽器添加到(存儲的)「load」事件。 – Tommi 2012-04-25 08:46:18
湯姆是正確的商店負載是異步的,也許這個答案會幫助你http://stackoverflow.com/questions/8367074/how-to-get-data-from-extjs-4-store/8376810#8376810 – nscrob 2012-04-25 09:00:48
謝謝,湯姆和nscrob! 「商店負載是異步的」是關鍵。所以我把'alert(store_new.getCount());'在(商店的)加載事件中,它成功返回2。 – 2012-04-26 02:21:52