Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как получить в ответ xml при запросе URLRequestMethod.POST? (http://www.flasher.ru/forum/showthread.php?t=134631)

buket 06.01.2010 15:31

как получить в ответ xml при запросе URLRequestMethod.POST?
 
может не коректно задал вопрос но суть така: есть некоторая перемнная id которая передается на сервер URLRequestMethod.POST, сервер обрабатывает и если в базе естьтакой id то фомирует в ответ xml, как его получиь в флеше если запрос проходит? вот actiotscript которые передает переменную на сервер(еслиможно то пример реализации покажите, заранне спасибо)
Код AS3:

send();
 
function send():void{
        var variables:URLVariables = new URLVariables();
        variables.id = "1452597";
 
        var request:URLRequest = new URLRequest("http://localhost/test2.php"); //Insert your own URL here.
        request.method = URLRequestMethod.POST;
        request.data = variables;
        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.VARIABLES;
        loader.addEventListener(Event.COMPLETE, completeHandler);
        try{
                loader.load(request);
        }
        catch (error:Error) {
                trace("Unable to load URL");
        }
}
function completeHandler(event:Event):void{
        var variables:URLVariables = new URLVariables(event.target.data);
        var msg = variables.msg;
        if(msg=="true"){
                trace("Done!");
        } else{
                trace("Error: "+msg);
        }
}

вот так я получаю xml который возращает сервер
Код AS3:

var xmlData:XML;
var classDataLoader:URLLoader = new URLLoader();
var classreqDataLoader:URLLoader = new URLLoader();
 
//loading xml data
classDataLoader.load(new URLRequest("http://localhost/test2.php"));
classDataLoader.addEventListener(Event.COMPLETE,loadCompleteClass);
 
 
//function extracting data from xml
function loadCompleteClass(event:Event):void
{
        xmlData = new XML(classDataLoader.data);
        for (var i in xmlData.log)
        {
                cbClasses.addItem({label:xmlData.log.title[i]});
                }
        }
 
//EventListeners for combo box
cbClasses.addEventListener(Event.CHANGE, showReq);
 
//function populating text area
function showReq(event:Event):void
{
        var itemSelected:Number = cbClasses.selectedIndex;
        taReq.text = xmlData..post[itemSelected];
        }

как свзать их, чтобы если первый кусок скрипта возвращает false то не выполнялся второй кусок скрипта, если true то выполнялся соответственно

Doctor76 06.01.2010 17:05

просто.
во втором скрипре вот это:
Код AS3:

var xmlData:XML;
var classDataLoader:URLLoader = new URLLoader();
var classreqDataLoader:URLLoader = new URLLoader();
 
//loading xml data
classDataLoader.load(new URLRequest("http://localhost/test2.php"));
classDataLoader.addEventListener(Event.COMPLETE,loadCompleteClass);

поместите в отдельную функцию. и если true - то вызываете ее.

buket 06.01.2010 17:37

не совсем меня поняли, мне надо чтобы именно с тем ид который в первом скрипте передается серверу брались данные соответствующие ему, а так получится что он запрос сделает и если true то выполняется второй скрипт а он берет все данные из базы, а мне надо именно данные с тем ид который отправляется серверу, вообще както так. сори что корявенько описал суть

Doctor76 06.01.2010 18:16

ну тут два пути
1 - либо сделать так что бы сервер отдавал нужную часть (но это наверно нужно php хорошо знать, или еще там что то...)

либо так же как я и описал. только при ответе - true - передаете туда id - и выдираете из ХМЛ те данные , которые соответствуют этому id

buket 06.01.2010 18:42

по поводу 1 то на php я реализовал, когда пхп получает от флш ид то он выдирает из базы соответствующие данные этому ид и выводит в виде xml.
а вот по поводу 2 с большим колитвом данных будет большая нагрузка, не вариант

Doctor76 06.01.2010 18:56

Мне кажется вам нужно, что бы в эту функцию сразу и приходил в ответ XML:

Код AS1/AS2:

function completeHandler(event:Event):void{
        var variables:URLVariables = new URLVariables(event.target.data);
        var msg = variables.msg;
        if(msg=="true"){
                trace("Done!");
        } else{
                trace("Error: "+msg);
        }
}

а у вас приходит какое то булево значение я так понимаю

(т.е. на сервере к примеру, если какие то данные по id найдены - серверный сценарий отправляет ХМЛ , в противном случае к примеру пустую строку)


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

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