2013-10-07 91 views
2

我嘗試開始使用ExtJs,並且我有一個相當基本的問題。
我有一個模型如何從ExtJs中的ajax加載json數據

Ext.define('Mb.model.User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'id', type: 'int' }, 
     { name: 'name', type: 'string' }, 
     ... 
    ], 
    proxy: { 
     type: 'ajax', 
     url : 'server/gui/getUser.php' 
    } 
}); 

getUser.php返回一個JSON字符串(它是在登錄的用戶,而不是用戶從一個用戶表):

{"id":"1","name": ... } 

我嘗試以下加載數據,但我得到一個錯誤Uncaught TypeError: Object [object Object] has no method 'load'

Ext.define('Mb.Application', { 
    ... 
    launch: function() { 
     .... 
     user = Ext.create('Mb.model.User'); 
     user.load(); 
    } 
}); 

什麼是加載數據的正確方法是什麼?


另外一個問題:什麼是這裏使用Model的好處?

難道我不能這樣做嗎?

Ext.Ajax.request({ 
    url: 'server/gui/getUser.php', 
    success: function(response){ 
    var user = Ext.JSON.decode(response.responseText); 
    } 
}); 

回答

1

在這種情況下,load是一種靜態方法。您可以通過傳遞ID從服務器加載模型。

Mb.model.User.load(id, { 
    success: function(rec) { 
     console.log('loaded', rec.getData()); 
    } 
}); 

使用模型的優點是抽象層+使用模型獲得的額外功能。

1

你可以這樣做,但變化不大

myRequest = Ext.Ajax.request({ 
    url: 'getdata.php', 
    method: 'GET', 
    callback: function(response) { 
    console.log(response.responseText); 
    } 
});