webForumDet fria alternativet

Flash event.Complete, funkar i FF men inte i IE.

Flash

5 svar · 496 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Har en kod som ska skicka lite variabler till en php sida, där de tas emot och lagras.

var request:URLRequest = new URLRequest ("savescore.php");
request.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
var varName:String;
var varEmail:String;
var varScore:Number;
var scrollform_out1:Tween;

varScore = totalScore_finished;
variables.sName = varName;
variables.sEmail = varEmail;
variables.iScore = varScore;
request.data = variables;
var loader:URLLoader = new URLLoader (request);
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(request);

function onComplete(e:Event):void{
	scrollform_out1 = new Tween(container, "x", Regular.easeOut, 0, 530, 5, false);		
	scrollform_out1.addEventListener(TweenEvent.MOTION_FINISH, movetoThankYou);
}

Detta fungerar perfekt när jag testkör den i Firefox, men i Internet Explorer så går den aldrig vidare till onComplete funktionen, dock sparar den värdena i databasen.. någon som vet vad som kan vara galet? Har testat att stänga av alla säkerhetsgrejer i IE, men inget hjälper.

Hur kan jag få ut eventuella felmeddelande etc som t.ex

            try
            {
                loader.load(request);
            } 
            catch (error:Error)
            {
                trace("Unable to load URL: " + error);
            }

på lättast sätt direkt i webbläsaren, förutom att skapa ett textfält och ladda in texten dit?

Medlem sedan apr. 2001762 inlägg
#2

Det jag skrev här innan var fel, har fortfarande problem i IE, att den inte går vidare.

EDIT:

Får inga felmeddelanden alls, och inte av:

	try
	{
		loader.load(request);
		errorTexts.text = "Sparat i databasen!";
	} 
	catch (error:Error)
	{
		errorTexts.text = "Unable to load URL: " + error;
	}

Det som skrivs ut är "Sparat i databasen!";

Medlem sedan apr. 2001762 inlägg
#3

Har testat lite mera nu och jag och en polare sitter båda två på Sony Vaio bärbara datorer, där fungerar det inte i IE, men på en annan dator fungerar det utan problem i IE, då körs onComplete funktionen. Kan någon på datorn påverka det?

Har testat på en macintosh på både Safari och Firefox och den går inte vidare och kör onComplete funktionen där heller... :(

Medlem sedan juni 200546 inlägg
#4

Eftersom load metoden på Loader klassen sker asynkront så kan du inte få ut felmeddelanden genom att omsluta den i ett try/catch block. Så länge som din request är korrekt kommer den aldrig hamna i catch blocket.

Det du behöver göra är att lyssna efter ett error event. Det gör du genom att skriva:

loader.contentLoaderInfo.addEventListener ( IOErrorEvent.IO_ERROR, loadOnError );

Föreslår även att du "sniffar" trafiken med Charles eller liknande. Då ser du exakt vad som skickas och vad som returneras.

Hoppas detta tar dig en bit på väg!

Medlem sedan apr. 2001762 inlägg
#5

Ah k, har testat att lägga till IOErrorEvent.IO_Error listenern, men får inte tillbaka något.

I Charles ser allt OK ut.

General

URL http://192.168.1.6/test/test.swf
Status Complete
Response Code 200 OK
Protocol HTTP/1.1
Method GET
Content-Type application/x-shockwave-flash
Client Address /127.0.0.1
Remote Address -
Timing
Request Start Time 2009-03-24 16:34:33
Response Start Time 2009-03-24 16:34:33
Response End Time 2009-03-24 16:34:33
Duration 261 ms
Response Duration 256 ms
Latency 5 ms
Speed 1*815,01 KB/s
Response Speed 1*848,43 KB/s
Size
Request Header Size 531 bytes
Response Header Size 330 bytes
Request Size -
Response Size 472,88 KB (484225 bytes)
Total Size 473,72 KB (485086 bytes)
Request Compression -
Response Compression -

Request

sEmail asdasd@asdsad.com
iScore 62
sName Urme

Response

HTTP/1.1 200 OK
Date Tue, 24 Mar 2009 15:35:22 GMT
Server Apache/2.2.8 (Ubuntu) mod_python/3.3.1 Python/2.5.2 PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch
X-Powered-By PHP/5.2.4-2ubuntu5.3
Content-Length 0
Content-Type text/html

Tog bort onComplete listenern just nu och då är det ju inga problem, det fungerar ju bra etc, men vad är nackdelarna?
Måste "savescore.php" returnera något egentligen?

Medlem sedan mars 20099 inlägg
#6

Jag vill minnas att det finns ett problem då servern inte returnerar någon data (som du ser får du bara HTTP-headers från servern.) Testa att bara skriva ut en tom rad eller någon textsträng som verifikation.

Sedan för att klargöra: Bryngfors har rätt i att en try-clause inte kan fånga ett exception som kastas under överföringen, men vissa exceptions kastas redan i load()-metoden, så det var inte helt befängt att prova det som du gjorde. Exempel på sådana fel är säkerhetsrelaterade (om jag inte missminner mig), d.v.s. när du exempelvis försöker komma åt nätverket utan att ha tillgång till det, eller dylikt.

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)