Неперехваченная ошибка типа: не удается вызвать метод ‘request’ неопределенного значения

#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...
});