Uncaught TypeError: Невозможно вызвать метод 'request' из неопределенного - PullRequest
5 голосов
/ 25 апреля 2011

В моем коде JavaScript я получаю следующую ошибку:

Uncaught TypeError: Cannot call method 'request' of undefined

Мой Javascript ниже. Любая помощь будет принята с благодарностью!

myJsonStore = {
    store1: new Ext.data.JsonStore({
        root: 'rootstore1',
        fields: ['UserID', 'UserName']
    })
};  

//------My panel------
items: [{                           
    xtype: 'combo',                          
    id: 'UName',                            
    fieldLabel: 'User',
    emptyText: 'All',                            
    store: myJsonStore.store1,                          
    displayField: 'UserName',                            
    valueField: 'UserID'                               
}] 

//--------------------

Ext.Ajax.request({                             
    url: "rPages/rLogMatchOdds.aspx",                            
    params: {                               
        m: 'init'                            
    },                                
    success: function(response) {     
        var data = Ext.decode(response.responseText);
        myJsonStore.store1.loadData(data);
    }
});

Ext.getCmp('UName').store.on('load', function(my, rec) {
    Ext.getCmp('UName').setValue(rec[0].get('UserName'));                         
}, this);

Ответы [ 2 ]

17 голосов
/ 26 апреля 2011

Обычно, когда ошибка имеет вид Cannot call method 'X' of undefined, это означает, что любой объект, из которого вы пытаетесь вызвать X, не существует.

В вашем случае это выглядит так, как будто Ext.Ajax не определено.Самый простой способ решить эту проблему состоит из двух простых шагов:

  • Убедитесь, что вы включили файл javascript, который создает Ext.Ajax.Если вы используете файл ext-all.js, вам не нужно об этом беспокоиться.
  • Убедитесь, что ни один из ваших кодов не выполняется, пока браузер не будет готов.Лучший способ сделать это - заключить весь код в вызов Ext.onReady().Я привел пример ниже.

    Ext.onReady( function() { //your code goes here });
    

Вы можете увидеть больше примеров этого на странице примеров ExtJS .

3 голосов
/ 18 июня 2012

Укушен этой проблемой тоже.

Решение для вас - позвонить Ext.require('Ext.Ajax') до Ext.onReady, например:

Ext.require('Ext.Ajax');

Ext.onReady(function() {
   Ext.Ajax.request({
     // your code here...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...