无法扩展Ext.Ajax.request

时间:2012-08-28 13:59:46

标签: ajax extjs request

我创建了扩展Ext.Ajax.request的类,但我可以运行它。我总是收到错误消息:

  

TypeError:me.fireEvent不是函数

if (me.fireEvent('beforerequest', me, options) !== false) { 

Ext.define('MY.classes.GetItem', {
    extend: 'Ext.Ajax.request', 

    url: 'getItems.php',
    method : 'GET',
    timeout: 30000, 

    success: function (response, opts){
        alert('email sent succ!');
    },

    failure: function (response, opts){
        alert('email request fail! ' + response.status);
        //var jsonResp = Ext.util.JSON.decode(response.responseText)
        //Ext.Msg.alert("Error",jsonResp.error);
    },

    // headers: {'Content-Type': 'application/json'},
    // jsonData: {"emailId" : "admin@psiloc.com" },

    params: {
        To: "arek@ooo.com",
        Subject: 'temat',
        Text: 'wiasomosc'
    }

});

我称之为:

var p =  {id: itemId};
        var req = Ext.create('MY.classes.GetItem');
        req.request( {params : p} );

是否可以通过扩展类调用请求?

我无法使其发挥作用。

1 个答案:

答案 0 :(得分:2)

那是因为你正在扩展一个函数,而不是一个类。 该类是Ext.Ajax

你不能扩展这个

Ext.define('...', {

     extend: 'Ext.window.Window.show',
});

你可以这样做(注意:我没有测试过,所以可能有bug):

Ext.define('MY.classes.GetItem', {

    url: 'getItems.php',
    method: 'GET',
    timeout: 30000,

    constructor: function() {
        var me = this;

        Ext.apply(me, config);

        me.callParent();
    },

    success: function(response, opts) {
        alert('email sent succ!');
    },

    failure: function(response, opts) {
        alert('email request fail! ' + response.status);
    },

    params: {
        To: "arek@ooo.com",
        Subject: 'temat',
        Text: 'wiasomosc'
    },

    request: function() {
        var me = this;
        Ext.Ajax.request({
            success: me.success,
            failure: me.failure,
            url: me.url,
            method: me.method,
            params: me.params
        });
    }
});​

按照以下方式打电话给你的班级:

var myClass = Ext.create('MY.classes.GetItem', {
    params: {
        p: 'my parameter'
    }
});
​myClass.request();​