#javascript #json #extjs
#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);
Комментарии:
1. Это означает, что
Ext.Ajax
не задано.2. Моя ошибка заключается в том, что данные не отображаются в поле со списком
3. Не могли бы вы уточнить ваше решение, пожалуйста?
4. Вау, у этого вопроса 50 000 просмотров и 2 балла.
Ответ №1:
Обычно, когда ошибка имеет вид 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.
Комментарии:
1. я должен использовать это ext-all.js файл.
2. Если вы используете
ext-all.js
, пробовали ли вы второе предложение?3. Если вы разобрались с этим, не могли бы вы опубликовать, как вы это решили, чтобы помочь другим, которые могут последовать?
Ответ №2:
Эта проблема тоже затронула.
Решение заключается в том, чтобы вы вызывали Ext.require('Ext.Ajax')
раньше Ext.onReady
вот так:
Ext.require('Ext.Ajax');
Ext.onReady(function() {
Ext.Ajax.request({
// your code here...
});