Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   sendToURL() - почему не работает? (http://www.flasher.ru/forum/showthread.php?t=173621)

Dimetr 07.01.2012 15:48

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() - все работает. В чем причина??

Jewelz 07.01.2012 16:12

используйте URLLoader

Dimetr 07.01.2012 16:52

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

zuxul 07.01.2012 17:31

Php точно не выполняется? Можно в файл что-нибудь написать для проверки...
Если нет, может это политика безопасности?

Dimetr 07.01.2012 17:39

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

zuxul 10.01.2012 10:27

Как Вы понимаете, что все работает или не работает?
Разница между sendToUrl и navigateToUrl в том, что sendToURL отправляет данные на сервер и игнорирует ответ от сервера, а navigateToURL открывает или заменяет окно в приложении, которое содержит контейнер Flash Player (©Adobe)

fish_r 10.01.2012 11:24

Работает navigate у вас потому, что вы просто переходите на страницу которую выдает в поток php. А при send вы отправляете данные, и они принимаются, но ответ во флешку не приходит, и не должен, ибо ситуация такая как написал zuxul. Чтобы убедиться в том, что работает, например, заставьте php создать произвольный текст. файл.

Добавлено через 55 минут
Цитата:

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

Тут дело не в простоте, а в назначении. sendToURL() предназначен для случаев когда приложение не желает контролировать, обработан ли запрос сервером. Такие случаи достаточно редки, обычно флешка желает знать результаты запроса к серверу. Так, что

Цитата:

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

carrotoff 10.01.2012 12:20

Кстати, если посылаете фоновый запрос на сервер, вывод лучше буферизировать

Dimetr 10.01.2012 14:05

Хм.. Похоже данные всетаки отправляются. Как я понял при 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" выходит..

crazyone 10.01.2012 15:38

PHP код:

<?
   
echo "buf=".$_POST['b'];
?>



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

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