Bogus
Bogus

Reputation: 245

Can't extend Ext.Ajax.request

I created class which extends Ext.Ajax.request but I can run it. I always get error message:

TypeError: me.fireEvent is not a function

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" : "[email protected]" },

    params: {
        To: "[email protected]",
        Subject: 'temat',
        Text: 'wiasomosc'
    }

});

I call it:

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

Is it possible to call request by extended class at all?

I cannot make it work.

Upvotes: 1

Views: 1385

Answers (1)

Johan Haest
Johan Haest

Reputation: 4431

That's because you're extending a function, not a class. The class is Ext.Ajax

You can't extend this either

Ext.define('...', {

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

You could do something like this (NOTE: I haven't tested this so might have bugs):

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: "[email protected]",
        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
        });
    }
});​

And call your class like this following:

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

Upvotes: 2

Related Questions