Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ajax Request не видит глобальную переменную, ExtJS 3.4 
:(
    Опции темы
OloloШа
Дата 12.3.2013, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Всем привет. Проблема такая: есть глобальный массив

Код

var res = [['db1','val1'],['db2','val2'],['db3','val3']];

function AjaxReq1(){
      for (var i=0;i<res.length;i++){
        Ext.Ajax.request({
               url : '/mssql/dbs',
               method : 'POST',
               response:'text',
               jsonData:"SELECT id FROM some_table WHERE  db = '"+res[i][0]+"'; ",
               success : function(response){ 
                        ............здесь уже не виден res...........
                     
              }
       })
      }
};

AjaxReq1();


Требуется выполнить кое-какие манипуляции с массивом res в зависимости от результатов Ajax запроса, но проблема в том, что в function(response) res уже не виден... Почему?

Это сообщение отредактировал(а) Aliance - 13.3.2013, 10:03
PM MAIL   Вверх
Aliance
Дата 13.3.2013, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Думаю, что все же переменную res видно внутри той функции, она все же глобальная. А вот переменную i та функция не видит, потому что ее scope ограничен функцией AjaxReq1.

Такая проблема возникает у пользователей этого форума с регулярность раз в неделю примерно.

Решение — явно создать замыкание.
Детально можно прочитать здесь в разделе «Замыкания внутри циклов».
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 13.3.2013, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Цитата(Aliance @  13.3.2013,  09:06 Найти цитируемый пост)
А вот переменную i та функция не видит

"видит", но там не то же значение, которое было при запуске цикла. а — последнее.
впрочем, решение этот факт не меняет.

Добавлено через 44 секунды
OloloШа, берешь дебаггер, ставишь точку останова и убеждаешься в правдивости слов Aliance: переменная есть.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.