Проблемы области видимости или рук
Такой вот код:
Excelsior.combo.Quotes = function(config) { config = config || {}; var tickers=[];//Здесь пытаюсь объявить массив, пох..н что tickers=[]; window.tickers=[]; tickres=newArray; Ext.Ajax.request({ url:'http://excprofit.ru/getticker', success:function(response,options){ tickers = JSON.parse(response.responseText); }, failure:function(response,options) { console.log("Error"); } }); for (var i=0;i<tickers.length;i++) { alert(tickers[i].company);// Проверка, все гуд аякс работает, выдает все что надо }; Ext.applyIf(config,{ store: new Ext.data.ArrayStore({ id: 0 ,fields: ['unit','display'] ,data: [ [1, tickers[0].company]//Uncaught TypeError: Cannot read property 'company' of undefined - И хоть ты сдохни ,[2, 'tick[0]'] ,[3, 'Газпром (GAZP)'] ,[4, 'ИнтерРАО (IRAO)'] ,[5, 'Лукойл (LKOH)'] ,[6, 'МТС (MTSI)'] ,[7, 'Роснефть (ROSN)'] ,[8, 'НЛМК (NLMK)'] ,[9, 'Новатэк (NVTK)'] ,[10, 'Ростелеком (RTKM)'] ,[11, 'Сбербанк (SBER3)'] ,[12, 'Сбербанк-пр (SBERP3)'] ,[13, 'Северсталь (CHMF)'] ,[14, 'Сургутнефтегаз (CNGS)'] ,[15, 'Сургутнефтегаз-пр (CNGSP)'] ,[16, 'Татнефть (TATN3)'] ,[17, 'Транснефть (TRNFP)'] ,[18, 'Уркалий (URKA)'] ,[19, 'ФСК ЕЭС (FSKE)'] ,[20, 'Холдинг МРСК (HMRK)'] ,[21, 'РусГидро (FGGK)'] ] }) ,mode: 'local' ,displayField: 'display' ,valueField: 'unit' }); Excelsior.combo.Quotes.superclass.constructor.call (this,config); }; Так что люди добрые плз хелп, хотя админиастрация просила не писать что нуб, да, полный, совсем не front-end программист Предпринимал все что можно - бегал с бубном, бился об стену, пытался создавать новый массив промежуточный через = или slice, смотрел курсы Кантор Ильи - ничего не помогает. Третья ночь без сна. На форум пишу первый раз в жизни, так что простите если что не так. |
Возможно так, хотя с Ext дела не имел.
Excelsior.combo.Quotes = function (config) {
config = config || {};
var tickers = []; //Здесь пытаюсь объявить массив, пох..н что tickers=[]; window.tickers=[]; tickres=newArray;
Ext.Ajax.request({
url: 'http://excprofit.ru/getticker',
success: function (response, options) {
tickers = JSON.parse(response.responseText);
Ext.applyIf(config, {
store: new Ext.data.ArrayStore({
id: 0,
fields: ['unit', 'display'],
data: [
[1, tickers[0].company] //Uncaught TypeError: Cannot read property 'company' of undefined - И хоть ты сдохни
, [2, 'tick[0]'],
[3, 'Газпром (GAZP)'],
[4, 'ИнтерРАО (IRAO)'],
[5, 'Лукойл (LKOH)'],
[6, 'МТС (MTSI)'],
[7, 'Роснефть (ROSN)'],
[8, 'НЛМК (NLMK)'],
[9, 'Новатэк (NVTK)'],
[10, 'Ростелеком (RTKM)'],
[11, 'Сбербанк (SBER3)'],
[12, 'Сбербанк-пр (SBERP3)'],
[13, 'Северсталь (CHMF)'],
[14, 'Сургутнефтегаз (CNGS)'],
[15, 'Сургутнефтегаз-пр (CNGSP)'],
[16, 'Татнефть (TATN3)'],
[17, 'Транснефть (TRNFP)'],
[18, 'Уркалий (URKA)'],
[19, 'ФСК ЕЭС (FSKE)'],
[20, 'Холдинг МРСК (HMRK)'],
[21, 'РусГидро (FGGK)']
]
}),
mode: 'local',
displayField: 'display',
valueField: 'unit'
});
Excelsior.combo.Quotes.superclass.constructor.call(this, config);
},
failure: function (response, options) {
console.log("Error");
}
});
};
|
Спасибо конечно!!!. Вы чисто поржать написали?, тут логики нуль....
|
0. Код надо форматировать иначе его никто читать не будет
1. Вас не смущает что Вы пытаетесь обратиться к нулевому индексу не массива а обычного json объекта, в котором у элементов числового индекса в общем случае просто нету? 2. Если же в объекте все есть, покажите данные отладчика, response, responseText, tickers |
Цитата:
человек вам правильно подсказывает Ext.Ajax.request - асинхронный метод и работу с массивом tickers надо реализовывать в callback определенном в конфиге success. а то что конструктор у вас в таком виде работать не будет ..дак это у вас такой супер план асинхронный ajax реквест делать в конструкторе. оберните массив в динамически генерируемый класс и этот класс добавьте в requires или mixins для вашего Quotes. |
| Часовой пояс GMT +3, время: 09:06. |