Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2014, 12:33
Аспирант
Отправить личное сообщение для kapustnik Посмотреть профиль Найти все сообщения от kapustnik
 
Регистрация: 18.04.2013
Сообщений: 32

Не передает значение массива внутрь $.ajax
Есть такой код:

function exist()
{
    var arr = ["1", "2", "3"];
	for(var i=0; i<arr.length; i++) {
       // здесь значение arr[i] еще передается
	$.ajax({
	url: "/admin/sys/db/" + arr[i] + "-log.txt",
	dataType:"text",
	cache: false,
	success: function(){ 
                // а здесь уже нет, arr[i] - undefined
		$('#skeleton-' + arr[i] + '').hide();  $('#frame-' + arr[i] + '').show();
	  },
	error: function(){ 
	//alert("/admin/sys/db/" + arr[i] + "-log.txt");
		$('#skeleton-' + arr[i] + '').show(); $('#frame-' + arr[i] + '').hide(); 
	  }
	});
	}
}


Внимание ВОПРОС (уважаемые знатоки) , почему внутрь ajax не передается значение массива arr[i] (определяется как undefined)
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2014, 17:42
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Arr переменная функции exist и она не видна для функции success
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2014, 18:52
Аспирант
Отправить личное сообщение для kapustnik Посмотреть профиль Найти все сообщения от kapustnik
 
Регистрация: 18.04.2013
Сообщений: 32

Логично. как сделать что бы видела? =
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2014, 19:23
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

У тебя цикл for в котором отправляются ajax запросы тут нет ни капли логики
Для того что бы видела нужно что бы arr была в зоне видимости.
А для этого нужно читать и изучать зоны видимости в javascript
Ответить с цитированием
  #5 (permalink)  
Старый 28.07.2014, 11:30
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

kapustnik,
Или так:

function exist(){
	["1", "2", "3"].forEach(function(elem, index){
			$.ajax({
				url: "/admin/sys/db/" + elem + "-log.txt",
				dataType: "text",
				cache: false,
				success: function(){ 
					$('#skeleton-' + elem + '').hide();  $('#frame-' + elem + '').show();
				},
				error: function(){ 
					$('#skeleton-' + elem + '').show(); $('#frame-' + elem + '').hide(); 
				}
			});
		});
	}
}


Но вообще лучше чем в цикле дергать аякс сделать 1 запрос, который бы давал сразу всю информацию.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Подскажите как достать значение из асс. массива posta Серверные языки и технологии 7 25.11.2012 00:38
Скажите, а возможно ли вычислить максимальное значение массива? Solovei95 Общие вопросы Javascript 5 28.01.2012 13:46
В contains() не подставляется значение переменной Heger jQuery 2 11.12.2011 20:26
Динамическое значение (например длину массива) запись в постоянное Vulkan Общие вопросы Javascript 14 17.06.2010 16:13