Проблемы области видимости или рук
Такой вот код:
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, время: 11:22. |