Jeg har et kodeord, et navn og en score jeg skal sende til et PHP dokument. Jeg kan ikke se hvad jeg gør forkert. Jeg får følgende fejlmeddelelse når jeg trykker på min send-knap:
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()
at flash.net::URLLoader/onComplete()
Og her er min kode:
//Er dette den rette løsning til et input textfield?:
var navn:TextField;
send_btn.buttonMode = true;
send_btn.addEventListener( MouseEvent.CLICK, sendClick );
function sendClick( e:MouseEvent ):void {
sendData();
}
function sendData():void {
var variables:URLVariables = new URLVariables();
variables.add_pass = "newscore";
variables.name = navn;
variables.score = finalScore;
var _request:URLRequest = new URLRequest("new_score.php");
_request.data = variables;
_request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.load(_request);
}
Jeg håber at i kan hjælpe mig igen. På forhånd tak.
8 kommentarer
Hej Frogman (fedt navn)!
Tror det er fordi du ikke sender selve teksten, men hele dit tekstfelt til php.
prøv med dette:
Mvh Stefan
Det hjalp desværre ikke
Jeg får samme fejlmeddelelse som før.
Men hvis jeg ændrer denne her linie:
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
Til:
loader.dataFormat = URLLoaderDataFormat.TEXT;
Så kommer der ingen fejlmeddelelser, men der bliver heller ikke tilføjet noget til databasen. Er der nogen der har en forklaring på det?
God idé!
Prøv også at tilføje denne, så du kan lytte efter eventuelle problemer.
Hvis der ikke traces noget, må fejlen ligge på php siden.
Jeg har prøvet at sætte det kode ind som du skrev, så får jeg denne meddelelse:
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()
at flash.net::URLLoader/onComplete()
Ovennævnte fejl er væk, men når jeg bruger det her kode som du gav mig:
loader.addEventListener( IOErrorEvent.IO_ERROR, sendIOError );
function sendIOError(e:Event):void{
trace(e);
}
Så får jeg denne fejl:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at istedgadespillet_fla::MainTimeline/frame15()[istedgadespillet_fla.MainTimeline::frame15:35]
at flash.display::MovieClip/gotoAndPlay()
at istedgadespillet_fla::MainTimeline/stuff_mover()[istedgadespillet_fla.MainTimeline::frame10:366]
Men når jeg ikke bruger den kode jeg fik af dig, så får jeg ingen fejlmeddelelser?
Men det sker når jeg går fra mit spilframe til slutscenariet
Jeg har fundet problemet. Jeg brugte POST i min flashfil, men GET i PHP'en. Virkelig dumt hæhæ men mange tak for hjælpen!
Er der så nogen der kan fortælle mig hvordan jeg henter info fra en PHP fil, så jeg kan lave en highscoreliste? Eller hvis i kan henvise mig til en hjemmeside hvor jeg kan læse mig til det. På forhånd tak!
Hej Frogman
Jeg har brugt ArmorBot til at lave en highscore. Det er godt nok en extern hiscore-funktion. Men den fungerer udmærket. Selvom jeg må indrømme, at jeg pinligt nok ikke kan få vist navne i min liste... Jeg overser åbenbart en garanteret åbenlys fjel.
Ellers vil jeg meget gerne høre, hvad du selv har fundet ud af omkring selv at lave en. En hurtig google-søgning giver dig en del forskellige løsninger. Actionscript.org og flashkit.com kan også hjælpe.
Hey mily.
Jeg fandt aldrig ud af hvordan jeg viser highscorelisten i flash, så jeg viser den bare på min php-side.
Men sådan her fik jeg sendt infoen til min database:
stage.addEventListener(Event.ENTER_FRAME, setFinalScore);
function setFinalScore(e:Event) {
finalScore_txt.text = finalScore.toString();
}
send_btn.buttonMode = true;
send_btn.addEventListener(MouseEvent.CLICK, send_handler);
function send_handler(event:MouseEvent):void {
stage.removeEventListener(Event.ENTER_FRAME, setFinalScore);
sendData();
}
function sendData():void {
var variables:URLVariables = new URLVariables();
variables.add_pass = "newscore";
variables.name = navn_txt.text;
variables.score = finalScore_txt.text;
variables.final = finalScore_txt.text;
var _request:URLRequest = new URLRequest("http://www.XXXXXXX.dk/forbind.php");
_request.data = variables;
_request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.load(_request);
send_btn.buttonMode = false;
send_btn.removeEventListener(MouseEvent.CLICK, send_handler);
}
Og så har jeg så en PHP-fil der hedder forbind.php, som behandler informationerne