2009-10-09 5 views
0

J'ai passé une journée à ce sujet et je n'arrive tout simplement pas à comprendre. Le problème est que Flash est en train de remplacer & par & dans mes paramètres de requête GET.Qu'est-ce qui provoquerait le remplacement de Flash (AS3) par & pour & dans les paramètres de requête GET?

Ainsi, par exemple, je vous envoie dans un URLLoader un URLRequest avec une URL semblable à ceci:

http://foo.blah.com/app/index.php?abc=def&ghi=jkl&mno=pqr 

J'ai vérifié en regardant le var dans le débogueur. Pourtant, il échoue sur notre serveur. rapports éthérées que ce qui est en fait aller sur le fil est le suivant:

GET /app/index.php?abc=def&ghi=jkl&mno=pqr 

pas la première, mais la secondes & sera remplacée par &.

Je n'arrive pas à comprendre comment arrêter de faire ça. Qu'est-ce qui pourrait causer ça? Ou est-ce que quelqu'un a des idées de choses que je peux étudier?

+0

Vous pouvez afficher le code dans lequel vous créez l'URLRequête. – Glenn

Répondre

1

Utilisez la propriété data pour construire les variables GET transmises (vous devrez également définir la méthode de requête sur GET, consultez la documentation AS3 pour plus d'informations).

exemple:

var getVars:URLVariables = new URLVariables(); 
getVars.abc = "def"; 
getVars.ghi = "jkl"; 

var request:URLRequest = new URLRequest(); 
request.data = getVars; 

urlLoader.load(request); 
0

Ugh. Ok, merci à Theo (à qui je donnerai le crédit pour la réponse parce que je ne connaissais pas les URLVariables) je suis allé vérifier toutes les choses possibles qui pourraient être fausses.

Le vrai problème était que j'ai effectivement & dans la demande d'URL d'origine. Je faisais un string.replace() qui, bien sûr, ne frappe que la première instance.

Le problème est que dans le débogueur, Flash convertit apparemment obligeamment & retour à &! Donc je n'ai pas vu le bug. Merci Flash!

Si j'avais fait une trace() sur la sortie juste pour être sûr (ce que je pensais avoir, mais je n'avais clairement pas) alors je l'aurais remarqué.

+1

str.replace (/ foo/g, "bar") remplacera toutes les instances de "foo" par "bar. – Glenn

Questions connexes