如何从ExtJs中的ajax加载json数据

时间:2013-10-07 09:13:44

标签: ajax json extjs model extjs4.2

我尝试开始使用ExtJs,我有一个非常基本的问题 我有一个模特

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);
    }
});  

2 个答案:

答案 0 :(得分:1)

在这种情况下,load是一种静态方法。您可以通过传递id从服务器加载模型。

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

使用模型的优点是抽象层,+使用模型获得的额外功能。

答案 1 :(得分:1)

你可以做,但几乎没有变化

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