Problème LoadVars avec une chaine contenant le caractère &

Résolu
k_net Messages postés 7 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 9 janvier 2006 - 7 janv. 2006 à 14:26
k_net Messages postés 7 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 9 janvier 2006 - 9 janv. 2006 à 18:57
Bonjour à tous !
J'ai un problème, j'aimerais récupérer par un loadVars une url donnée par un fichier php.
Ce fichier php (list.php) renvoie, entre autres, ça :
page_url=http://www.truc.com/index.php?mode=object&object_id=93&start_id=93
Voila le script que j'utilise :
flux_send = new LoadVars();
flux_load = new LoadVars();
flux_send.var1 = "truc";
flux_send.var2 = "toto";
flux_send.sendAndLoad("list.php", flux_load, "POST");
flux_load.onLoad = function(ok) {
if (ok) {
_root.page_url = _root.flux_load.page_url;
} else {
_root.erreur = "Erreur !";
}
Evidemment, la variable s'arrète au 1er & rencontré, ce qui fait que j'ai dans Flash:
_root.page_url = "http://www.truc.com/index.php?mode=object"
Voilà mon problème.
Ici, faire htmlentities()en php avant l'envoi des variables ne servirait à rien puisque ça transformerait les & en & (ça reviendrait au même )
J'ai essayé de remplacer avant le transfert tous les caractères & par __AMP__, mais je ne trouve pas de fonction dans flash qui me permette de remplacer tous les __AMP__ par des & pour revenir à la chaine originale.
En fait si : j'ai trouvé la classe RegExp, mais lors de la compilation, j'ai un problème car elle est faite pour AS 1.0 et je compile en ActionScript 2.0. Voila l'erreur à la compilation :
**Erreur** D:\Flash\Projet\RegExp.as: Ligne 306 : Les scripts de classe ActionScript 2.0 peuvent définir uniquement des éléments de classe ou d'interface.
RegExp.prototype.test = function() {
En plus cette classe alourdit mon .swf de 100 Ko...
Je suis donc assez embêté car ça fait maintenant 5 jours que je maudit Google pour trouver la solution
J'espère donc que l'un de vous aura la soution !
Merci d'avance !

7 réponses

SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
8 janv. 2006 à 19:53
Ca n'alourdis ni la taille du fichier échangé, ni la programmation si tu mets toutes tes variables en paramètres à la racine de ton XML : de cette forme :
<datas var1="var 1" var2="1 &amp; 2" />

Tu as alors un programme du genre :
var flux:XML = new XML();
var datas:Objet;
flux.onLoad = function(success) {
if (success) {
datas = flux.firstChild.attributes;
trace(datas.var1);
trace(datas.var2);
} else {
trace ('erreur');
}
};
flux.sendAndLoad("list.php", flux_load, "POST");

SuperDevy, c la !
3
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
7 janv. 2006 à 16:49
Effectivement, ça pose problème.
<li>Si tu n'as qu'une seule variable à passer, tu peux récupérer le fichier généré en php grâce à LoadVars.onData</li><li>Si tu as plusieur variables à passer, tu dois utiliser le XML.
</li>

SuperDevy, c la !
0
k_net Messages postés 7 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 9 janvier 2006
8 janv. 2006 à 17:02
Merci pour ta réponse
Le problème c'est que le fichier php envoie plein de variables en une fois :/
Le XML rend t-il la programmation coté flash plus difficile ?
Est-ce que ça alourdit beaucoup le fichier .swf ? (en plus d'alourdir le transfert de variables)
Merci d'avance.
0
k_net Messages postés 7 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 9 janvier 2006
8 janv. 2006 à 22:00
Merci, je viens de tout convertir en XML au niveau PHP et flash, et après quelques tentatives (et problèmes :p) , maintenant tout marche à merveille !
Encore merci et bonne continuation
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
k_net Messages postés 7 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 9 janvier 2006
9 janv. 2006 à 13:37
Arf il reste un problème : les guillemets :(
A chaque fois qu'il y en a dans une variable à transmettre, ça fait une erreur (et c'est normal)
Existe il une fonction flash qui ferait l'inverse de htmlentities() en php ? (je mettrais &quot; coté serveur)
Ou alors une autre solution ?
Merci
0
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
9 janv. 2006 à 17:05
Flash analyse automatiquement les caractères encodés pour les affichés comme il se doit : tu peux donc utiliser &quot; et &amp; de la même manière !

SuperDevy, c la !
0
k_net Messages postés 7 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 9 janvier 2006
9 janv. 2006 à 18:57
En fait c'est bizarre j'avais essayé avec htmlentities() et ça ne marchait pas
Maintenant j'utilise str_replace('"', '&quot;', $machaine) et ça marche. Bizarre :/
Tout est parfait, encore un grand merci à toi, SuperDevy !
0
Rejoignez-nous