Toon posts:

[flash] XML.send

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik maak in flash een XML bestand, deze wil ik met de de send functie versturen naar een PHP bestand op mijn server. Nu wil ik dat dit gebeurt op de achtergrond. Daarom gebruik het _self argument. Flash doet dit wel goed, alleen laadt hij in hetzelfde venster het php bestand (dus het flash filmpje verdwijnt).

Ik gebruik de send functie omdat hij helemaal niks doet met sendAndLoad.

Overigens word het flash bestand ingeladen in een ander flashbestand.

Onderstaand is een (heel) verkorte versie van het scritp weergegeven:


Flash ActionScript:
1
2
3
var XMLData:XML = new XML ("<XML></XML>");
XMLData.contentType = "text/xml";
XMLData.send ( "http://www.myserver.nl/myfile.php", "_self" );

  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Maak een bufferframe en gebruik die als target?

Verwijderd

Topicstarter
Ja daar heb ik ook aangedacht, maar dat is nou niet direct de meest "nette" workaround die je kan bedenken. Ik ga nu proberen om het flash bestand, die deze SWF inlaadt de functie uit te laten voeren.

[ Voor 4% gewijzigd door Verwijderd op 29-12-2003 13:12 ]


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Verwijderd schreef op 29 december 2003 @ 12:32:
Ik gebruik de send functie omdat hij helemaal niks doet met sendAndLoad.
dan doe je toch iets verkeerd? :)

"You're only as good, as what you did last week."


Verwijderd

Ik sluit me even aan bij Owen...send and load hoort gewoon te functioneren. Kan je een wat meer real life voorbeeld van je probleem met sendAndLoad() showen?

Verwijderd

Topicstarter
ok, wanneer ik op een button druk worden de volgende functies achterelkaar uitgevoerd:

buildNewXML()
Flash ActionScript:
1
2
3
4
5
6
7
8
9
var x:String = positions[ 0 ][ 1 ];
var y:String = positions[ 0 ][ 2 ];
var myColor:Number = positions[ 0 ][ 3 ];
        
for ( var i:Number = 1; i < positions.length; i++ ) {
  // arrays worden doorlopen, en uit de waarden word een nieuwe XML node gemaakt.
}

XMLData.firstChild.appendChild( childNode );


checkLength()
Flash ActionScript:
1
2
3
4
5
if ( XMLData.firstChild.childNodes.length > 25 ) {
    for ( var i:Number = XMLData.firstChild.childNodes.length - 25; i > 0 ; i-- ) {
        XMLData.firstChild.childNodes[ i ].removeNode ();
    }
}


sendXML()
Flash ActionScript:
1
2
XMLData.contentType = "text/xml";
XMLData.send ( "http://haring.hku.nl/prototype/graffiti.php", "_self" );


het XMLbestand (XMLData) word dus eerst ingeladen, en vervolgens word de nieuwe node hieraan toegevoegd. SendAndLoad doet hij niks, hij return niks, en hij laad ook niks in ...

[ Voor 3% gewijzigd door Verwijderd op 29-12-2003 15:09 ]


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Ok, als ik het met mijn kerstkater zo eens bekijk, dan doet het het volgende:

- XML bestand wordt ingeladen
- intern wordt deze geparsed naar een boomstructuur
- interne array wordt geparsed naar een XML node
- boomstructuur wordt geparsed ( doorlopen ) en dan wordt er na node 25 alles weggehaald?
- boomstructuur wordt naar de server verzonden ( via send want sendAndLoad doet niets? )

2 vraagjes / opmerkingen:

- volgens mij is je checkLength functie een recipy for disaster, kzie een 'magic' number ( 25 ) staan, plus je evalueert de lengte van je childnodes continue, terwijl je die vervolgens in de loop zelf weghaalt ( removeNode )
- bevat je boomstructuur ook wel enige data? wat doet je Remote Debugger?

HTH

"You're only as good, as what you did last week."


Verwijderd

Topicstarter
Wat ik doe is dat ik niet wil dat de lengte van het XML bestand groter dan 25 nodes is. Deze functie werkt goed, ik kan hem er wel even tussenuit halen om te kijken of dit het probleem oplost. De structuur bevat ook gegevens. Wanneer ik namelijk send gebruik dan slaat hij netjes het XML bestand op. sendAndLoad doet daarentegen helemaal niks.
Pagina: 1