未捕获的TypeError:无法调用未定义的方法'request'

时间:2011-04-25 09:03:04

标签: javascript json extjs

在我的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 个答案:

答案 0 :(得分:17)

通常,如果错误的格式为Cannot call method 'X' of undefined,则表示您尝试从X调用的任何对象都不存在。

在您的情况下,似乎Ext.Ajax未定义。解决此问题的最简单方法包括两个简单的步骤:

  • 确保您已包含创建Ext.Ajax的javascript文件。如果您使用的是ext-all.js文件,那么您不必担心这个问题。
  • 确保在浏览器准备好之前不会执行任何代码。执行此操作的最佳方法是将所有代码包装在 Ext.onReady()调用中。我在下面提供了一个例子。

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

您可以在ExtJS Examples page找到更多相关示例。

答案 1 :(得分:3)

也受到这个问题的困扰。

解决方案是让您在Ext.require('Ext.Ajax')之前致电Ext.onReady,如下所示:

Ext.require('Ext.Ajax');

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