Javascript.RU

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

Достать данные из ответа сервера.
Сервер возвращает строку вида: "filename1,filename2,filename3 ...". (Проверено - возвращает!)
Нужно эту строку преобразовать в массив и сделать его доступным для использования в других функциях.

Написал функцию:
window.getFiles = function(){
	var files = new Array;
	$.ajax({url: 'php_get_files.php',
			type: 'get',
			dataType: 'text',
			success: function(text){
				files = text.split(",");
			}
	});
	return files;
}


Но при попытке вывести элемент массива на странице:

var file_list = new Array;
file_list = getFiles();
var file = file_list[1];
var image = "<b style='color: #FFF'>"+file+"</b>";
$('#some_element').html(image);


Выдает undefined.

Подскажите, пожалуйста, где я не прав???

Последний раз редактировалось Dozentos, 18.10.2013 в 22:44. Причина: неверно указал переменную
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2013, 20:56
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Dozentos
Подскажите, пожалуйста, где я не прав???
в 10й строчке. Вы возвращаете из функции то, чего еще не получили от сервера
Ну и непонятно, что с переменной image делается дальше
window.getFiles = function(){
	var files = new Array;
	$.ajax({url: 'php_get_files.php',
			type: 'get',
			dataType: 'text',
			success: function(text){
				$('#some_element').html("<b style='color: #FFF'>" + text.split(",")[1] + "</b>");
			}
	});
}

Последний раз редактировалось BETEPAH, 18.10.2013 в 21:02.
Ответить с цитированием
  #3 (permalink)  
Старый 18.10.2013, 22:55
Аватар для Dozentos
Аспирант
Отправить личное сообщение для Dozentos Посмотреть профиль Найти все сообщения от Dozentos
 
Регистрация: 08.10.2013
Сообщений: 47

BETEPAH,
Я там неверно переменную указал, сейчас уже поправил.
Ваш вариант понятен. Если бы нужно было вставить один из элементов массива - оно бы так и проще. Но проблема в том, что нужен весь массив, доступный в других функциях
Попытка сделать так:
window.getImg = function(){
	var images = new Array;
	$.ajax({url: 'php_slider_2.php',
			type: 'get',
			dataType: 'text',
			success: function(text){
				images = text.split(",");
				return images;
			}
	});
}

К успеху также не привела, хотя так:
window.getImg = function(){
	var images = new Array;
	$.ajax({url: 'php_slider_2.php',
			type: 'get',
			dataType: 'text',
			success: function(text){
				images = text.split(",");
				alert(images[1]);
			}
	});
}
getImg();

выдало содержимое ячейки..?

Первую ошибку понял (должен был сам догадаться). Но теперь ничего не понимаю???
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2013, 05:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Dozentos
success: function(text){
                images = text.split(",");
                return images;
            }
Функция success вернет результат именно туда, откуда она была вызвана. А теперь вопрос: откуда была вызвана функция success?

Сообщение от Dozentos
Но теперь ничего не понимаю???
Вы не понимаете сущность асинхронности.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 19.10.2013, 09:25
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Dozentos
Но проблема в том, что нужен весь массив, доступный в других функциях
мне бы ваши проблемы. Попробуйте как-то так:
window.arr = [];
window.getFiles = function(){
	var files = new Array;
	$.ajax({url: 'php_get_files.php',
			type: 'get',
			dataType: 'text',
			success: function(text){
				arr.push("<b style='color: #FFF'>" + text.split(",")[1] + "</b>");
			}
	});
}
Ответить с цитированием
  #6 (permalink)  
Старый 19.10.2013, 14:18
Аватар для Dozentos
Аспирант
Отправить личное сообщение для Dozentos Посмотреть профиль Найти все сообщения от Dozentos
 
Регистрация: 08.10.2013
Сообщений: 47

Что-то я вчера вечером затупил... Очевидно же - объявить переменную на глобальном уровне, а переопределить уже внутри функции...
Честно говоря я нашёл другой способ решения моей проблемы. Вовсе без создания массива.
В любом случае, спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 09:04
[Node.js, jQuery, nginx] Ошибка получения ответа на POST-запрос от сервера bukvaG AJAX и COMET 0 14.12.2012 08:52
Как достать данные из JSON массива? Dimaz jQuery 15 27.11.2012 19:58
Получение ответа от сервера. kliver AJAX и COMET 14 25.06.2012 07:41
разборка xml ответа с сервера Jekel AJAX и COMET 3 17.10.2010 00:10