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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.03.2010, 16:35
catcat вне форума Посмотреть профиль Отправить личное сообщение для catcat Найти все сообщения от catcat
  № 1  
Ответить с цитированием
catcat

Регистрация: Mar 2010
Сообщений: 93
По умолчанию Ошибка при декодировании URLVariables.

Пытаюсь передать переменные в PHP, делаю пример по книге, но постоянно выскакивает ошибка
Цитата:
2101: Строка, переданная в URLVariables.decode(), должна быть строкой запроса закодированного URL-адреса и содержать пары имя/значение
Сам код простой:
Код:
var serverFile:String = "http://localhost/web/test_flash.php";

var variables:URLVariables = new URLVariables();
variables.id = 1111;
variables.user = "nick";
var urlRequest:URLRequest = new URLRequest(serverFile);
urlRequest.data = variables;
urlRequest.method = URLRequestMethod.POST;

var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;

urlLoader.addEventListener(Event.COMPLETE, userResponseHandler);

try
{ urlLoader.load(urlRequest); }
catch (e:Error) { }

function userResponseHandler(e:Event):void
{
	var urlLoader:URLLoader = URLLoader(e.target);
	var args:URLVariables = new URLVariables(urlLoader.data);
	trace("Data: " + args.response);
}
Кто-нибудь знает, в чем может быть дело? Похожие темы уже поднимались, но в данном случае ответа я так и не нашел
У меня Flash CS4.


Последний раз редактировалось wvxvw; 29.03.2010 в 18:33.
Старый 29.03.2010, 17:08
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Вот это уже было,
Код AS3:
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
Зачем делать это?
Код AS3:
var args:URLVariables = new URLVariables(urlLoader.data);
Вы и так дали понять. что data и есть URLVariables.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 29.03.2010, 17:43
catcat вне форума Посмотреть профиль Отправить личное сообщение для catcat Найти все сообщения от catcat
  № 3  
Ответить с цитированием
catcat

Регистрация: Mar 2010
Сообщений: 93
Даже если вообще эти строчки убрать, все равно та же ошибка выскакивает, там не в handler'е дело

Старый 29.03.2010, 18:07
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
 
function userResponseHandler(e:Event):void {
	var urlLoader:URLLoader = URLLoader(e.target);
	trace("Data: " + urlLoader.data);
}
Что выводит trace?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 29.03.2010, 18:32
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
http://bugs.adobe.com/jira/browse/FP-1666
Поставьте тут крестик.
И никогда на этом форуме не называйте темы так, как вы это сделали. Все шанcы за то, что ваша тема будет закрыта до того, как кто-либо вам ответит. Помогайте себе и другим понять о чем речь, и поверьте, никто наизусть ошибки по номерам не знает.
__________________
Hell is the possibility of sanity

Старый 29.03.2010, 18:58
catcat вне форума Посмотреть профиль Отправить личное сообщение для catcat Найти все сообщения от catcat
  № 6  
Ответить с цитированием
catcat

Регистрация: Mar 2010
Сообщений: 93
Цитата:
И никогда на этом форуме не называйте темы так, как вы это сделали
Ок, я учту.
Цитата:
Поставьте тут крестик.
Что за крестик?
Ну а как с этим багом бороться? Как в 10-м Flash Player переменные получить-то?

Старый 29.03.2010, 19:09
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Вольный перевод workaround

Не используйте URLLoaderDataFormat.VARIABLES. Установите формат в URLLoaderDataFormat.TEXT и распарсите самостоятельно, например:

Код AS3:
var re:		RegExp = /(?P<prop>[^&=]+)=(?P<val>[^&]*)/g;
var result:	Object; 
var response:	String = "foo=bar&bar=foo"; 
var resultOBJ:	Object = {};
 
do { 
	result = re.exec(response); 
	if (!result) 
		break; 
	resultOBJ[result.prop] = result.val; 
}
while (true); 
 
for (var p:String in resultOBJ) { 
	trace(p, "=", resultOBJ[p]); 
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 29.03.2010, 19:16
catcat вне форума Посмотреть профиль Отправить личное сообщение для catcat Найти все сообщения от catcat
  № 8  
Ответить с цитированием
catcat

Регистрация: Mar 2010
Сообщений: 93
Цитата:
распарсите самостоятельно
Не совсем понятно... так это метод load() вызывать не надо? Как это примерно должно выглядеть? Извиняюсь, если вопрос нубовский.

Старый 29.03.2010, 21:21
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
function userResponseHandler(e:Event):void {
	var response:String = URLLoader(e.target).data;
 
	var re:		RegExp = /(?P<prop>[^&=]+)=(?P<val>[^&]*)/g;
	var result:	Object; 
	var resultOBJ:	Object = {};
 
	do { 
		result = re.exec(response); 
		if (!result) 
			break; 
		resultOBJ[result.prop] = result.val; 
	}
	while (true); 
 
	response = "";
 
	for (var p:String in resultOBJ) { 
		response += p + "=" + resultOBJ[p] + "&"; 
	}
 
	var args:URLVariables = new URLVariables(response);
 
	trace( "Data: " + args.toString() );
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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