Una din principalele abilitati a unei aplicatii Web trebuie sa fie comunicarea acesteia cu serverul, posibilitatea de a trimite date catre server si sa primeasca raspuns de la el.
Flash, prin ActionScript are posibilitatea de a trimite si primi date catre server.
- In acest tutorial e prezentat modul de trimitere a unui continut de date XML din ActionScript la un script PHP, printr-o prezentare Flash (SWF).
// https://marplo.net/flash // Campul text in care va fi afisat raspunsul de la server var respTxt:TextField = new TextField(); // Variabila in care va fi retinut raspunsul de la server var re_server:XML; // Aici se poate incarca si edita date XML, apoi transformate in sir, cu toXMLString() // Sirul cu datele XML var xml_str:String = '<?xml version="1.0" encoding="UTF-8"?><root><value>marplo.net</value></root>'; // Se defineste obiectul cu adresa fisierului PHP si modul de transmitere a datelor var php_url:URLRequest = new URLRequest("savexml.php"); // Obiectul cu adresa fisierului php_url.data = xml_str; // Adauga datele php_url.contentType = "text/xml"; // Defineste tipul continutului trimis php_url.method = URLRequestMethod.POST; // Metoda de transmitere - POST var obj_send_load:URLLoader = new URLLoader(); // Instanta de obiect prin care vor fi trimise // Definire Eveniment ce detecteaza cand datele sunt trimise complet si raspunsul e primit obj_send_load.addEventListener(Event.COMPLETE, onComplete, false, 0, true); // Definire Eveniment care e declansat in caz de erore la transferul datelor obj_send_load.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true); // Functia apelata de Evenimentul declansart cand transferul e finalizat function onComplete(evt:Event):void { // Se foloseste try ... catch pt. a retine si personaliza eventuala eroare try { re_server = XML(evt.target.data); // Retine ca XML raspunsul primit de la Server respTxt.text = re_server; // Adauga in campul de text raspunsul primit } catch (err:TypeError) { // Daca e generata vreo eroare, o retine si o include in campul de text respTxt.text = "Eroare la procesare raspuns de la server:\n" + err.message; } // Sterge inregistrarea evenimentelor, pt. a elibera memoria removeEventListener(Event.COMPLETE, onComplete); removeEventListener(IOErrorEvent.IO_ERROR, onIOError); placeText(); // Apeleaza functia care afiseaza in prezentarea Flash campul de text } // Functia apelata de evenimentul ce se declanseaza la aparitia vreunei erori de transfer function onIOError(evt:IOErrorEvent):void { // Preia eroarea, o personalizeaza si o adauga in campul de text respTxt.text = "Eroare la trimiterea datelor XML.\n" + evt.text; placeText(); // Apeleaza functia care afiseaza in prezentarea Flash campul de text } // Functia care afiseaza in prezentarea Flash campul de text function placeText():void { // Se definesc proprietatile zonei de text (distanta, multiline, aliniere, bordura) respTxt.x = 5; respTxt.y = 15; respTxt.multiline = true; respTxt.autoSize = TextFieldAutoSize.LEFT; respTxt.border = true; addChild(respTxt); // Adauga campul de text in Flash } // Se executa trimiterea datelor, cu metoda load() ce le contine ca argument obj_send_load.load(php_url);
<?php // https://marplo.net // Calea si numele fisierului XML pe server $xml_file = 'xmls/test.xml'; // Retine ca sir datele primite prin POST $xml_data = $HTTP_RAW_POST_DATA; // Daca datele din $xml_data sunt salvate pe server (in locatia de la $xml_file) // Le afiseaza /Returneaza ca raspuns // Daca nu pot fi salvate, returneaza un mesaj de eroare if(file_put_contents($xml_file, $xml_data)) echo $xml_data; else echo 'Eroare, datele XML nu au putut fi salvate pe server, la'. $xml_file; ?>
Datele XML din ActionScript pot fi incarcate dintr-un fisier extern si prelucrate inainte de a fi trimise la server. Esential este ca acestea sa fie transformate in sir (String) inainte de trimitere.
- Despre incarcarea si prelucrarea datelor XML in Flash vedeti lectiile de la sectiunea ActionScript 3.0.
<ul> <li>http://coursesweb.net/html/</li> <li>http://www.marplo.net/html/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net
I`m living here. - Traiesc /Locuiesc aici.
Estoy viviendo aquĆ. - Traiesc /Locuiesc aici.