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

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

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

Регистрация: Jun 2010
Сообщений: 6
По умолчанию sendToURL() - почему не работает?

Всем доброго времени суток. Тема довольно избита, но все же - удовлетворительного решения так и не нашел. Есть такой код - a.s.:

Код:
package pac  {
	import flash.display.MovieClip;
	import flash.display.*;
	import flash.events.*;
	
	import flash.net.URLVariables;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.net.sendToURL;

	public class btnGo  extends SimpleButton {
		
			   

		public function btnGo() 
		{
			
		this.addEventListener(MouseEvent.CLICK, click_func);
		
		function click_func():void
		{
			
			trace("нажали кнопку");
			
			var url:String = "http://www.proba.ru/index.php";
			var req:URLRequest = new URLRequest(url);
			req.method = URLRequestMethod.POST  ;
			var variables:URLVariables = new URLVariables();
			variables.myName = 12345;
			req.data = variables;
			

			sendToURL(req);
			
		   
		}//коец функции - клик по кнопке
		}//конец конструктора
	}//конец класса	
}//конец пакета

php:

Код:
<?php
echo "Приветствие. Тестируем обмен данными между flash и php";
echo "<br>";
$b = $_POST['myName'];
echo $b;
echo"<p></p>";

?>
<embed src="proba.swf" width ="550" height="400"></embed>
По нажатию кнопки переменная myName должна отправляться из swf файла в php. Но ничего не происходит!!
А если заменить на navigateToURL() - все работает. В чем причина??

Старый 07.01.2012, 16:12
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 2  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
используйте URLLoader
__________________
low +

Старый 07.01.2012, 16:52
Dimetr вне форума Посмотреть профиль Отправить личное сообщение для Dimetr Найти все сообщения от Dimetr
  № 3  
Ответить с цитированием
Dimetr

Регистрация: Jun 2010
Сообщений: 6
Изначально я так и делал. Но результат тот же - связка не работает. Поэтому решил пока только с отправкой данных разобраться. Чем меньше кода - тем легче разобраться с ошибками, я думаю)

Старый 07.01.2012, 17:31
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 4  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Php точно не выполняется? Можно в файл что-нибудь написать для проверки...
Если нет, может это политика безопасности?

Старый 07.01.2012, 17:39
Dimetr вне форума Посмотреть профиль Отправить личное сообщение для Dimetr Найти все сообщения от Dimetr
  № 5  
Ответить с цитированием
Dimetr

Регистрация: Jun 2010
Сообщений: 6
не знаю ничего насчет политики безопасности. Я с php знаком всего неделю. У меня D.E.N.W.E.R - локальный сервер. Но как написал выше - при замене функции sendToURL на navigateToURL() все работает. А в чем тут существенная разница?

Старый 10.01.2012, 10:27
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 6  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Как Вы понимаете, что все работает или не работает?
Разница между sendToUrl и navigateToUrl в том, что sendToURL отправляет данные на сервер и игнорирует ответ от сервера, а navigateToURL открывает или заменяет окно в приложении, которое содержит контейнер Flash Player (©Adobe)

Старый 10.01.2012, 11:24
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 7  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Работает navigate у вас потому, что вы просто переходите на страницу которую выдает в поток php. А при send вы отправляете данные, и они принимаются, но ответ во флешку не приходит, и не должен, ибо ситуация такая как написал zuxul. Чтобы убедиться в том, что работает, например, заставьте php создать произвольный текст. файл.

Добавлено через 55 минут
Цитата:
Сообщение от Dimetr Посмотреть сообщение
Изначально я так и делал. Но результат тот же - связка не работает. Поэтому решил пока только с отправкой данных разобраться. Чем меньше кода - тем легче разобраться с ошибками, я думаю)
Тут дело не в простоте, а в назначении. sendToURL() предназначен для случаев когда приложение не желает контролировать, обработан ли запрос сервером. Такие случаи достаточно редки, обычно флешка желает знать результаты запроса к серверу. Так, что

Цитата:
Jewelz: используйте URLLoader

Старый 10.01.2012, 12:20
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 8  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Кстати, если посылаете фоновый запрос на сервер, вывод лучше буферизировать
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 10.01.2012, 14:05
Dimetr вне форума Посмотреть профиль Отправить личное сообщение для Dimetr Найти все сообщения от Dimetr
  № 9  
Ответить с цитированием
Dimetr

Регистрация: Jun 2010
Сообщений: 6
Хм.. Похоже данные всетаки отправляются. Как я понял при sendToUrl() текущая страница с отправляющим swf
файлом просто не должна обновляться. Поэтому строка
Код:
echo $b;
переданную переменную не отображает на странице. Хотя данные переданы. Тогда возвращаясь к URLLoader - каким образом php передает данные во флэш? Вроде это делается через echo как -то..

Добавлено через 10 минут
Допустим есть код a.s.
Код:
package pac  {
	import flash.display.MovieClip;
	import flash.display.*;
	import flash.events.*;
	
	import flash.net.URLVariables;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
        import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat; 
	
	
	
	
	public class btnGo  extends SimpleButton {
		
			   

		public function btnGo() 
		{
			
		this.addEventListener(MouseEvent.CLICK, click_func);
		
		
		function click_func():void//*************************CLICK
		{
			
			trace("нажали кнопку");
			
			var url:String = "http://www.proba.ru/index.php";
			var req:URLRequest = new URLRequest(url);
			req.method = URLRequestMethod.POST  ;
			var variables:URLVariables = new URLVariables();
			variables.myName = 12345;
			req.data = variables;
			
			var loader:URLLoader = new URLLoader();
			
			
			
			loader.addEventListener(Event.COMPLETE, onComplete);
                        loader.load(req);
                        loader.dataFormat = URLLoaderDataFormat.VARIABLES ;
			
			
            function onComplete(e:Event):void {
            // выводим полученные данные в поле result_tf
            trace(loader.data.buf );
            }
			
		}//конец функции - клик по кнопке
			
		}//конец конструктора
	}//конец класса	
}//конец пакета
Добавлено через 16 минут
как тогда должна выглядеть php составляющая, чтобы переменную myName вернуть назад во флэш? У меня результат трейса все время "undefined" выходит..

Старый 10.01.2012, 15:38
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 10  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
PHP код:
<?
   
echo "buf=".$_POST['b'];
?>
__________________
aka doctorstal

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

Теги
php + flash

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

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


 


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


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