webForumDet fria alternativet

Flex + PHP + FaultEvent.

3 svar · 345 visningar · startad av UrMe

UrMeMedlem sedan apr. 2001762 inlägg
#1

Har börjat göra en applikation i Flex + AMFPHP, jag har dock ett problem hur jag skickar tillbaka om t.ex en person skrev in fel lösenord.

Jag kör AMFPHP, och triggar ett php fel med detta:
trigger_error("Wrong username or password!");

Detta kör igång min funktion i Flex som ser ut så här:

private function onFault(e:Object) : void
{
          mx.controls.Alert.show(ObjectUtil.toString(e));
}

Denna funktion ger ett popup fönster med felmeddelandet inkl. mitt felmeddelande.

(Object)#0
  code = "AMFPHP_RUNTIME_ERROR"
  description = "Wrong username or password!"
  details = "e:\projektmapp\Webb\annat\adobe flex 2 applicationer test\amfphp-1.9.beta\amfphp\services\userLogin.php"
  level = "Unknown error type"
  line = 37

Men jag vill ju inte ha all den där texten när folk skriver in fel login/lösen.

Så har kollat lite på FaultEvent.. har gjort denna funktion:

private function onFault(e:FaultEvent) : void
{
          mx.controls.Alert.show(e.fault.faultString);
}

Men när applikationen körs och jag skriver in fel login/lösen så får jag ett felmeddelande:

TypeError: Error #1034: Type Coercion failed: cannot convert Object@817dd81 to mx.rpc.events.FaultEvent.

Tror jag har sökt ihjäl mig på google, postat på actionscript.org och adobe.com forum, men ingen svarar på mina frågor.

Någon här som är en jäkel på Flex?

BlixtsystemsMedlem sedan maj 2005704 inlägg
#2

Har du provat att byta typ till objekt...som så:

private function onFault(e:Object) : void
{
          mx.controls.Alert.show(e.fault.faultString);
}

Det skall funka med FaultEvent som typ...men det ser ut som det av någon anledning skickas som ett objekt istället.
Varför vet jag dock inte.

UrMeMedlem sedan apr. 2001762 inlägg
#3

Ja jag har provat det med, då får jag ett felmeddelande att e.fault.faultstring refererar till ingenting eller något.

Men jag har gjort om själva felmeddelande systemet helt, skickar ett värde så den fångas av onResult istället och så får jag göra något med det där.

typ så här i flex:

			public function newUserSuccess( result : Array ) : void
            {
            	if(result[0]['type'] == "OK") {
	            	emailaddress.text = '';
	            	username.text = '';
	            	passw.text = '';
	            	mx.controls.Alert.show(result[0]['msg']);
	            	getUsers();
	            } else if(result[0]['type'] == "USEREXISTS") {
	            	username.text = '';
            		mx.controls.Alert.show(result[0]['msg']);
	            } else if(result[0]['type'] == "EMAILEXISTS") {
	            	emailaddress.text = '';
            		mx.controls.Alert.show(result[0]['msg']);
            	}            	
            }
RamzeusMedlem sedan mars 200642 inlägg
#4

Jag brukar använda detta:

private function remoteFaultHandler(evt:FaultEvent):void
{
	Alert.show(evt.fault.faultString, evt.fault.faultCode);
}

I PHP-koden så använder jag throw new Exception("Mitt felmeddelande"); för att returnera när saker går åt he***te.

Sen om du har problem med svenska tecken mellan databasen och Amfphp 1.9 beta 2 så har jag några buggfixar till det som kanske kan hjälpa lite.
Även om du försöker skicka objekt av datatypen Xml från Flex så kan amfphp bugga. Har även en fix för detta bekymmer om du behöver. Antar iof att 2.0 kommer inom en rimlig framtid och fixar till allt det där.

128 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)