Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2011, 14:21
develops вне форума Посмотреть профиль Отправить личное сообщение для develops Найти все сообщения от develops
  № 1  
Ответить с цитированием
develops
[+3 25.01.12]
 
Аватар для develops

Регистрация: Mar 2011
Адрес: Земля
Сообщений: 19
Question Подскажите ошибку в методе SendAndLoad класса LoadVars

Нажатием по кнопке, вызываю клас. Получить хочу пропарсеный масив, но не отдает.
Trace выводит, а returnОМ не могу. С класами недавно, поэтому где нибудь ошибка в вызове функции, прошу Вашей помощи.

Вызов по кнопке:

Код AS1/AS2:
btn.onRelease = function()
{
trace(getLink.getLinks("http://korrespondent.net/"));
}
Сам клас:

Код AS1/AS2:
class getLink
{
 
	public var links:String;
	public var my_array:Array;
 
		static function getLinks(url:String):Void
		{
 
		var lvSend:LoadVars = new LoadVars();
		var lvReceive:LoadVars = new LoadVars();
		lvSend.sendAndLoad(url, lvReceive, "POST");
		//return url;
 
 
		lvReceive.onData = function(data):Array{
 
			if (data == null) 
			{
			trace("error");
			return null;	
			}
			else
			{	
 
			links = unescape(data);
 
			var arr_end = [];
			var my_array = links.split("<li>");
 
			for (var i = 0; i<my_array.length; i++) {
			my_array[i] = (my_array[i].slice((my_array[i].indexOf('http')), (my_array[i].indexOf('/'))));
			}
			//trace(my_array);  //Здесь возвращает- то что нужно, но не в return
			return my_array;
 
			} 
		};
 
	}
}
Файл прикрепил. Заранее благодарю.





P.S. Чисто терминологичекая ошибка.
Вот, если сделать возврат из первой функции- вернет прекрасно url, например:


Код AS1/AS2:
class getLink
{
 
 
		static function getLinks(url:String):String
		{
 
		var lvSend:LoadVars = new LoadVars();
		var lvReceive:LoadVars = new LoadVars();
		lvSend.sendAndLoad(url, lvReceive, "POST");
		return url;   //возвратить url, который мы передали.
		};
 
}
А результат POST запроса от lvReceive.onData- не пойму как принять:
Вложения
Тип файла: rar parse.rar (107.5 Кб, 47 просмотров)


Последний раз редактировалось develops; 17.12.2011 в 15:58. Причина: изменение темы
Старый 17.12.2011, 15:59
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Извините, а можно в двух словах описать, что именно вы планируете получить по данной ссылке?
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 17.12.2011, 16:29
develops вне форума Посмотреть профиль Отправить личное сообщение для develops Найти все сообщения от develops
  № 3  
Ответить с цитированием
develops
[+3 25.01.12]
 
Аватар для develops

Регистрация: Mar 2011
Адрес: Земля
Сообщений: 19
да нет, ссылка как наглядный пример post запроса для получения html страницы. Ну а дальнейший парсинг- это само собой разумеется.

Старый 17.12.2011, 16:39
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 4  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
ссылка отдается. файл с пустотй приходит. парсится оно также в пустоту, вот undefined вы и получаете

Ну и к тому же .onData - возникает как только данные стали поступать.
Надо использовть .onLoad - когда получены.

Далее. trace выдает вам нулевой отсутствующий ответ от getLinks(), а не по факту свершившегося события .onData или .onLoad.

Соотв. переписываем примерно так:

Код AS1/AS2:
getLink.getLinks("http://korrespondent.net/", callBack )
 
function callBack( DAT ){
	trace( "DATA PARSED:"+DAT );
}
Код AS1/AS2:
class getLink
{
 
	public var links:String;
 
 
	static function getLinks(url:String, callBack ):Void
	{
 
		var lvSend:LoadVars = new LoadVars();
		var lvReceive:LoadVars = new LoadVars();
		lvSend.sendAndLoad(url, lvReceive, "POST");
 
		lvReceive.onLoad = function( data ){
 
			trace( "DATA RECEIVED" );
 
			if (data == null) {
				trace("error");
				return null;
			}
			else{
				links = unescape(data);				
				var arr_end = [];
				var my_array = links.split("<li>");
 
				for (var i = 0; i<my_array.length; i++){
					my_array[i] = (my_array[i].slice((my_array[i].indexOf('http')), (my_array[i].indexOf('/'))));
				}				
				callBack ( my_array );  
			}
		}
 
	}
}
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2


Последний раз редактировалось dark256; 17.12.2011 в 16:51.
Старый 17.12.2011, 17:52
develops вне форума Посмотреть профиль Отправить личное сообщение для develops Найти все сообщения от develops
  № 5  
Ответить с цитированием
develops
[+3 25.01.12]
 
Аватар для develops

Регистрация: Mar 2011
Адрес: Земля
Сообщений: 19
Сенкс, добрый человечек!
Уловил суть, что требовалось ))
Чет я не сообразил вызвать функцию с передачей ей этого ж самого масива.

Вот только по поводу onLoad/onData.
Все же- onLoad, мне в данный момент- возвращает :Boolean, т.е. true.
А вот, при замене на onData, возвращает данные из post.
Но и вправду- при разных скоростях инета- String из запроса, будет разный, т.к. нет полной загрузке при onData.


Последний раз редактировалось develops; 17.12.2011 в 18:00.
Старый 17.12.2011, 18:16
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 6  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
onData - глючит безбожно. По сути это НАЧАЛО поступления данных, а не факт их окончания получения.
Соотв тут либо шаманить надо, либо даже и не знаю.
Я не смог нормально пользоваться этим событием. В общем случае - файл получаю либо пустой, либо полузагруженный.

Далее. Вы грузите не СКРИПТ, а САЙТ - что он там вам отдает - неизвестно в общем случае
В нисфере там мильон всяких файлов по ссылке отдается. Выберите какой-нть более простой и явный пример для загрузки
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
sendAndLoad

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:59.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.