[javascript][Surement bete] Probleme avec symbole +

Probleme avec symbole + [javascript][Surement bete] - HTML/CSS - Programmation

Marsh Posté le 23-05-2006 à 10:20:15    

Bonjour a tous,  
 
Bon j'ai une petite question mais qui me pose des problemes.  
lors d'un location.href, c'est possible de mettre un symbole + dans l'url envoyé ??  
 
je m'explique :  
avec  
var i = "toto + tata";
location.href = 'bob.php?nom_model='+i;
 
car la il retourne :
bob.php?nom_model=toto%20+%20tata et ca marche pas  
 
 
si quelqu'un a une idée, je suis preneur...
 
EDIT : j'ai essayer de faire des replace mais c'est le meme probleme, il me les prends pas ....


Message édité par _ataraxya_ le 23-05-2006 à 10:20:59

---------------
Go Go Kirby Dance Machine !   <('-'< ) ^( '-' )^ v(._.)v (>'-')>
Reply

Marsh Posté le 23-05-2006 à 10:20:15   

Reply

Marsh Posté le 23-05-2006 à 10:46:30    

si toto et tata sont des nombre tu fait : var i=toto+tata;
 
Si ce sont des chaines de caractére à concatener:
 
var i="toto"+"tata";

Reply

Marsh Posté le 23-05-2006 à 10:50:28    

en fait non, j'ai du mal m'expliquer   :sweat: :  
"toto + tata" est une chaine de charactere qui doit etre passer en argumement dans l'url  


---------------
Go Go Kirby Dance Machine !   <('-'< ) ^( '-' )^ v(._.)v (>'-')>
Reply

Marsh Posté le 23-05-2006 à 10:55:03    

ben soit tu passes en post...comme ça c plus beau...
 
Soit tu transformes les caractéres spéciaux en entitié

Reply

Marsh Posté le 23-05-2006 à 10:58:22    

sauf qu'ici c'est du javascript :/


---------------
Go Go Kirby Dance Machine !   <('-'< ) ^( '-' )^ v(._.)v (>'-')>
Reply

Marsh Posté le 23-05-2006 à 11:07:10    

faut que tu encode ta chaine de caractère via un truc dans le genre:

Code :
  1. function encode(str) {
  2. var result = "";
  3. for (i = 0; i < str.length; i++) {
  4.  if (str.charAt(i) == " " ) result += "+";
  5.  else result += str.charAt(i);
  6. }
  7. return  escape(result);
  8. }


et après il te reste juste à faire

Code :
  1. location.href = 'bob.php?nom_model='+encode(i);

Reply

Marsh Posté le 23-05-2006 à 11:15:44    

bon je vien de trouver  
je fais un replace ( mais bon cette fois  :o ) avec javascript  
i = i.replace("\+","plus;" );
 
merci quand meme :jap:


---------------
Go Go Kirby Dance Machine !   <('-'< ) ^( '-' )^ v(._.)v (>'-')>
Reply

Marsh Posté le 23-05-2006 à 11:16:41    

anapajari > j'ai pas teste ta solution mais merci quand meme ( en plus cela me parait beaucoup plus élégant :o )  
 


---------------
Go Go Kirby Dance Machine !   <('-'< ) ^( '-' )^ v(._.)v (>'-')>
Reply

Marsh Posté le 23-05-2006 à 11:30:28    

il faut que tu encodes la valeur de ton parametre. Pour ça, normalement il y a la fonction prédéfinie encodeURI
 

Code :
  1. var i = encodeURI("toto + tata" );


 
J'ai testé et ça marche pas, les espaces sont bien encodés mais il laisse le caractère "+" aolrs que c'est un caractère réservé....
 
Solution à tester : on remplace les caractères '+' par son code %2B
(de la même façon que les espaces sont remplacés par %20)

Code :
  1. var i = 'toto + tata';
  2. i.replace(/\\+/, "%2B" );


 
Je donne ça en vrac, j'ai pas le temps de tester :p
 
EDIT : grilled ! plusieurs fois d'ailleurs


Message édité par Bidem le 23-05-2006 à 11:32:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed