Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3698 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  méthode split (js)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

méthode split (js)

n°1257332
Asmodean
Posté le 02-12-2005 à 11:02:59  profilanswer
 

Bonjour tout le monde,
 
Dans le cadre de la mise en place d'AJAX pour créer un petit panneau utilisateur je recois les informations de ma page ajax.php en mode texte...mais comme j'ai besoin de recevoir plusieur infos je renvoie infos1#infos2#infos3....et dans mon script js je fait un split("#" ). Le problème c'est quand une des info contient un espace...il a l'air de spliter au niveau de l'espace. J'ai beau faire un escape avant de spliter et de faire split("%(code du diese)" )ca ne marche toujours pas.
 
LA version avec escape

Code :
  1. ajax_object.onreadystatechange = function() {
  2.                 if(ajax_object.readyState == 4) {
  3.                         var resultat = escape(ajax_object.responseText)
  4.                         reponse = resultat.split("%23" );
  5.                         if(unescape(reponse[0]) == 0)
  6.                                 document.getElementById("pannel_control" ).innerHTML = '<p>'+unescape(reponse[1])+'</p>';
  7.                         else if(unescape(reponse[0]) == 1) {
  8.                                 var infos = '<div class="infos">';
  9.                                 infos += '<p align="center">' +unescape(reponse[4])+ '</p>';
  10.                                 infos += '<table>';
  11.                                 infos += '<tr><th>Victoires</th><th>Défaites</th></tr>';
  12.                                 infos += '<tr><td>' +unescape(reponse[1])+ '</td><td>' +unescape(reponse[2])+ '</td></tr>';
  13.                                 infos += '</table>';
  14.                                 infos += '</div>';
  15.                                 document.getElementById("pannel_control" ).innerHTML = '<h4>'+unescape(reponse[5])+'</h4>';
  16.                                 document.getElementById("pannel_info" ).innerHTML = bouton+'<br/><div class="avatar"><img src="http://www.fallengalaxy.com/images/avatar/'+unescape(reponse[3])+'"/></div>'+infos;
  17.                         }
  18.                         else
  19.                                 document.getElementById("pannel_control" ).innerHTML = '<p>'+unescape(reponse[1])+'</p>';
  20.                 }
  21.         }</code>


 
La version sans

Code :
  1. ajax_object.onreadystatechange = function() {
  2.                 if(ajax_object.readyState == 4) {
  3.                         var reponse = ajax_object.responseText.split("#" );
  4.                         if(reponse[0] == 0)
  5.                                 document.getElementById("pannel_control" ).innerHTML = '<p>'+reponse[1]+'</p>';
  6.                         else if(reponse[0] == 1) {
  7.                                 var infos = '<div class="infos">';
  8.                                 infos += '<p>' +reponse[4]+ '</p>';
  9.                                 infos += '<table>';
  10.                                 infos += '<tr><th>Victoires</th><th>Défaites</th></tr>';
  11.                                 infos += '<tr><td>' +reponse[1]+ '</td><td>' +reponse[2]+ '</td></tr>';
  12.                                 infos += '</table>';
  13.                                 infos += '</div>';
  14.                                 document.getElementById("pannel_control" ).innerHTML = '<h4>'+reponse[5]+'</h4>';
  15.                                 document.getElementById("pannel_info" ).innerHTML = bouton+'<br/><div class="avatar"><img src="http://www.fallengalaxy.com/images/avatar/'+reponse[3]+'"/></div>'+infos;
  16.                         }
  17.                         else
  18.                                 document.getElementById("pannel_control" ).innerHTML = '<p>'+reponse[1]+'</p>';
  19.                 }
  20.         }


 
Pour ceux qui veulent tester <lien>http://www.fallengalaxy.com/test</lien> puis ouvrez le pannel a gauche du site. login: test@fallengalaxy.com pass: test et ensuite le pseudo choisit doit apparaitre sous la ligne or il s'arrête a l'espace ("Test Pannel" normalement et la ca fait "test" seulement)

mood
Publicité
Posté le 02-12-2005 à 11:02:59  profilanswer
 

n°1257365
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-12-2005 à 11:27:58  profilanswer
 

D'abord split fonctionne très bien ( même avec # ou des espaces).
Preuve cette petite fonction vite fait:

Code :
  1. function t(){
  2.     var string = "a#b#c#d #e#f";
  3.     var arr= string.split(/#/);
  4.     for (i=0; i<arr.length; i++){
  5.       alert("["+arr[i]+"]" );
  6.     }
  7.   }


Donc je pense que c'est plutot ton retour du serveur qu'est pas top.
 
Ensuite sur le lien que tu donnes, moi le partie gauche elle se déploit pas (suis sur FF1.5 et j'ai erreur js: maximize is not defined)
 
Einfin alors déjà le X dans Ajax c'est pour XML, tu n'es donc pas censé renvoyé du texte séparé par des # :o

n°1257367
omega2
Posté le 02-12-2005 à 11:29:31  profilanswer
 

AJAX, c'est pas une technique métant en oeuvre un dialogue page web/serveur par demande de fichier XML?
 
Dans ce cas pourquoi concaténer a l'aide de # alors qu'en XML, il suffit de faire un

Code :
  1. <machin>donnée1</machin><machin>donnée2</machin><machin>donnée3</machin><machin>donnée4</machin>

ou mieux un

Code :
  1. <machin html="donnée1" reponse="donnée2" image="donnée3" info="donnée4" />

et récupérer les données comme pour tout fichier xml.

n°1257372
Asmodean
Posté le 02-12-2005 à 11:37:43  profilanswer
 

Pour le xml je suis d'accord mais je ne me suis pas encore penché sur la chose donc pour le moment je fais ça en texte...
 
Et si le split marche alors...je vais continuer de voir ce qui ne va pas ^^
 
Merci quand même

n°1257401
omega2
Posté le 02-12-2005 à 12:18:51  profilanswer
 

Mais si tu fais ça avec de simpels fichiers texte pas XML, alors tu ne fait pas d'AJAX du tout même si t'as un objet ou une classe nomé "ajax_object".

n°1257417
Asmodean
Posté le 02-12-2005 à 12:33:22  profilanswer
 

Oui mais j'utilise le meme principe ^^
 
En attendant j'ai réolu mon problème...il ne se situait pas du tout ou je pensais. Il se produisait lorsqu'il j'affichais mon forulaire d'option pour choisir le compte...il n'acceptait pas les espace dans value ( <option value=""> ) et donc il allait me chercher un autre membre^^.
 
Merci encore pour le coup de main et je regarderais le XML (j'en ai utilisé pour le rss mais je ne l'ai pas encore abordé pour AJAX ^^ )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  méthode split (js)

 

Sujets relatifs
HttpURLConnection, méthode POST et paramètre dans le corp de la requêtParamètre d'une méthode
Methode toString() générique, introspection.Recherche de méthode de lecture de source HTML
appeler méthode de classe-mère [résolu]Methode pour creer un site
problème sur méthode SaveAsméthode de conception pour une interface graphique pour mon programme
NullPointerException avec la methode equals et split !!!! [Résolu]la methode split
Plus de sujets relatifs à : méthode split (js)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)