PDA

Volledige versie bekijken : LoadVars met AS 3.0?


Trax
%Europe/Berlin %749 %2007, 18:59
Ik heb al honder keer een formuliertje gemaakt in Flash 8, nu wil ik dezelfde (aangepaste) code gebruiken voor een ander formuliertje in Flash CS3 maar krijg een hele resem fouten bij mijn output. (Zie bijlage) Kan ik LoadVars niet meer gebruiken in AS 3.0? Hoe los ik dit dan op?

Alvast erg bedankt!

var send_lv:LoadVars = new LoadVars();
function sendMail(){

send_btn.enabled = false;

send_lv.naam = naam_txt.text;
send_lv.adres = adres_txt.text;
send_lv.postcode = postcode_txt.text;
send_lv.gemeente = gemeente_txt.text;
send_lv.telefoon = telefoon_txt.text;
send_lv.email = email_txt.text.split(" ").join("");

send_lv.sendAndLoad("sendMail.php", receive_lv, "POST");
}

var receive_lv:LoadVars = new LoadVars();

receive_lv.onLoad = function() {

//verzonden
if(this.mailResult){
setStatus("Bedankt "+naam_txt.text+", je bericht werd verstuurd.");
//leeg
naam_txt.text = "";
adres_txt.text = "";
postcode_txt.text = "";
gemeente_txt.text = "";
telefoon_txt.text = "";
email_txt.text = "";

//niet verzonden
}else{
setStatus("Fout! (Ongeldig e-mail adres?)");
}

send_btn.enabled = true;
}

function setStatus(status){
status_txt.text = status;
}

marcvz
%Europe/Berlin %902 %2007, 22:39
Loadvars is niet meer...

In as 3.0 moet je met URLRequest, URLLoader en URLVariables aan de slag.
Dus zoek deze even op in de help files en dan kom je er denk wel uit.

En kijk ook even bij
Networking and communication > Working with external data
in de help files

Trax
%Europe/Berlin %483 %2007, 12:36
Ik heb gisteren heel de avond (nacht) en deze voormiddag zitten prutsen met die URLRequest, URLVariables,... classes maar krijg het niet aan de praat. Ik stond open voor AS 3.0 maar het lukt echt niet. Er zit niks anders op dan het in 2.0 te maken. ********! Of te wachten tot er misschien een duidelijk tutorial of iets van uitkomt.

package {
import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.net.*;

public class SendMail extends Sprite {

public function sendMail() {

send_btn.addEventListener(MouseEvent.MOUSE_UP, sendData);
}
private function sendData(event:MouseEvent) {

var request:URLRequest = new URLRequest( "sendMail.php" );

var variables:URLVariables = new URLVariables( );
variables.naam = naam_txt.text;
variables.adres = adres_txt.text;
variables.postcode = postcode_txt.text;
variables.gemeente = gemeente_txt.text;
variables.telefoon = telefoon_txt.text;
variables.email = email_txt.text.split(" ").join("");

request.data = variables;

var loader:URLLoader = new URLLoader( );

loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener( Event.COMPLETE, handleComplete );
loader.load( request );

}
private function handleComplete( event:Event ):void {
var loader:URLLoader = URLLoader( event.target );

//status_txt.text = event.target.data;
}
}
}

stop();

TheDutch
%Europe/Berlin %520 %2007, 13:30
Trax, je bent juist erg goed op weg! Leg eens uit waar je nu precies strandt :).
Gebruik ook de functie trace() om te zien hoe ver je code wordt uitgevoerd.

Trax
%Europe/Berlin %534 %2007, 13:49
Vergeef je het me als ik hier later even op terug kom? :)
Ik zie ff alles in as.

TheDutch
%Europe/Berlin %593 %2007, 15:14
Geen probleem! :)

Dauntless
%Europe/Berlin %604 %2007, 15:29
Ik wou een voorbeeltje maken voor Trax maar het lukte me zelf niet ... Dit past volledig bij dit topic, dus ik post het hier even:

package
{
import flash.net.*;
import flash.events.Event;

import flash.display.MovieClip;

public class MailForm extends MovieClip
{
private var myLoader:URLLoader;
public function MailForm()
{
// 2 getallen versturen, PHP stuurt het product terug

//de url moet opgeslagen worden in een URLRequest instance
var myRequest:URLRequest = new URLRequest("http://www.dauntless.be/Temp/multiply.php");

//manier van data overdracht aangeven:
myRequest.method = URLRequestMethod.POST

//nieuwe url loader aanmaken. Als argument de url geven
myLoader = new URLLoader();

//de getallen opslaan in een URLVariables instance:
var myVariables:URLVariables = new URLVariables();
myVariables.getal1 = 5;
myVariables.getal2 = 33;

//de variabelen die je wilt sturen koppelen aan de request
myRequest.data = myVariables;

//het type van de variabelen aanduiden:
myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;

//event listener die luistert naar wanneer de data er is
//myLoader.addEventListener(Event.COMPLETE, onCompleteHandler);

//de data versturen
myLoader.load(myRequest);
}


private function onCompleteHandler():void
{
trace(myLoader.data);
}





}
}
Nu krijg ik een error:
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables$iinit()
at flash.net::URLLoader/flash.net:URLLoader::onComplete()

Ik neem aan dat er iets mis is met de manier waarop ik de variabele ontvang of zo?
Mijn php ziet er gewoon zo uit:
<?php


$getal1 = $_REQUEST['getal1'];
$getal2 = $_REQUEST['getal2'];

print urlencode("&result=".($getal1 * $getal2)."&");




?>

Wat gaat er fout? :#

Flashingback
%Europe/Berlin %615 %2007, 15:46
Je moet de urlRequest class en de urlVariables class nog importeren denk ik.

Dauntless
%Europe/Berlin %620 %2007, 15:54
Ik heb heel flash.net geimporteerd :). (Anders zou ik ook andere foutmeldingen krijgen)

Flashingback
%Europe/Berlin %623 %2007, 15:57
Uhu ik zag het net ik wou nog net men post editen. Test je hem locaal? Waarschijnlijk is het dan gewoon een firewall probleem ofzo.