在我的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);
答案 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...
});