j'ai l'impression que tu utilises un parseur HTML pour FF, tu as essayé oCodeRetour.innerHTML ?
06 juin 2008 à 11:06
Pour firefox si tu n'utilise pas l'objet innerHTML cela ne peux pas fonctionner.
06 juin 2008 à 11:12
Akshell a écrit
tu pourais mettre un exemple de réponse envoyé ?
req.responseText contient cela :
OKOK
00
Mory
4
11
Dhl
1
13
Nfrance
1
16
Cat
1
18
Heppner
1
23
Bmv
7
27
Abx
1
29
Sernam
3
36
Martelet
1
38
Speed
2
41
Nacex
5
43
Lomatrans
1
44
Cims
301
49
Satas
5
50
Calber
4
51
Datway
1
63
Fce
2
70
Stg
1
74
Tendron
2
75
Bpack
1
79
Zust
1
83
Prudent
1
84
Jammet
2
95
Nif
2
(faire "citer" pour voir :)
Dernière modification le 06/06/08 à 11:16 par LeChat
06 juin 2008 à 11:15
J'ai remplacé "oCodeRetour.item(0).text" par "oCodeRetour[0].childNodes[0].nodeValue" et ça a l'air mieux.
(ce doit être l'équivalent de ce que dit CaptNCook)
06 juin 2008 à 11:24
C'est pas gagné :
117
118 // Si le code de retour n'est pas "OK" on affiche le libellé de l'erreur.
119
120 if( oCodeRetour[0].childNodes[0].nodeValue != "OK" )
121 {
122 oLibelleRetour = ret.getElementsByTagName("LIBELLERETOUR");
123 }
124 else
125 {
126 // Si la réponse est "OK on parcours et insère les réponses dans une liste.
127
128 // Récupération du nombre de réponses = nombre de fils de LISTECD moins 2 : CODERETOUR et LIBELLERETOUR
129
130 oListeCD = ret.getElementsByTagName("LISTECD");
131 iNbRep = oListeCD[0].childNodes.length;
132 alert( "iNbRep : " + iNbRep );
133 document.forms["BILAN"].BilanClient.options.length = 0;
134 document.forms["BILAN"].ListeCD.options.length = 0;
135
136 // Récupération des différentes réponses
137
138 for( i=0 ; i < (iNbRep - 2) ; i++ )
139 {
140 szCodeCli = ret.getElementsByTagName("CODECLI").item(i).text;
141 szNomCli = ret.getElementsByTagName("NOMCLI").item(i).text;
142 szNbCd = ret.getElementsByTagName("NBCD").item(i).text;
iNbRep vaut 26 pour IE et 52 pour FF !
06 juin 2008 à 11:28
Bon, je ne sais pas comment je vais gérer le problème du iNbRep mais en tout cas ça marche.
Merci à tous.
J'ai aussi converti ces lignes
140 szCodeCli = ret.getElementsByTagName("CODECLI").item(i).text;
141 szNomCli = ret.getElementsByTagName("NOMCLI").item(i).text;
142 szNbCd = ret.getElementsByTagName("NBCD").item(i).text;
en
144 szCodeCli = ret.getElementsByTagName("CODECLI")[i].childNodes[0].nodeValue;
145 szNomCli = ret.getElementsByTagName("NOMCLI")[i].childNodes[0].nodeValue;
146 szNbCd = ret.getElementsByTagName("NBCD")[i].childNodes[0].nodeValue;
Dernière modification le 06/06/08 à 11:41 par LeChat
06 juin 2008 à 11:41
chez moi iNbRep vaut 26 pour les deux, donc a priori par de problème, ensuite tes deux premiers items sont CODERETOUR, LIBELLERETOUR
donc soit tu utilises getElementsByTagName soit tu commences ta boucle a partir du troisième item.
for( i=2 ; i < iNbRep ; i++ )
06 juin 2008 à 11:45
CaptNCook a écrit
et ret.getElementsByTagName("CD").length ?
Bisous :)
06 juin 2008 à 11:45
Akshell a écrit
chez moi iNbRep vaut 26 pour les deux, donc a priori par de problème, ensuite tes deux premiers items sont CODERETOUR, LIBELLERETOUR
donc soit tu utilises getElementsByTagName soit tu commences ta boucle a partir du troisième item.
for( i=2 ; i < iNbRep ; i++ )
Apparemment ça fonctionne avec ma boucle "for( i=0 ; i < (iNbRep - 2) ; i++ )"
Par contre, je ne comprends pas pourquoi tu as la même valeur pour les deux et pas moi !
06 juin 2008 à 11:48
tu peux même faire :
var cd = ret.getElementsByTagName("CD");
var codecli = ret.getElementsByTagName("CODECLI");
var nomcli = ret.getElementsByTagName("NOMCLI")
var nbcd= ret.getElementsByTagName("NBCD")
if(cd.length>0) {
for(i in cd) {
szCodeCli = codecli[i].childNodes[0].nodeValue;
szNomCli = nomcli[i].childNodes[0].nodeValue;
szNbCd = nbcd[i].childNodes[0].nodeValue;
}
}
else {
//rien
}
06 juin 2008 à 11:56
Tant que je vous tiens (ou pas), vous avez une idée pour aligner des valeurs à afficher dans un "select" ?
Actuellement je fais comme ça (je sais c'est pas beau) :
154 oNouv = new Option( " " + szCodeCli + " " + szNbCd + szBuf + " " + szNomCli, szCodeCli, false, false);
155 document.forms["BILAN"].BilanClient.options[i] = oNouv;
Ca marche sous IE (à peu près aligné) mais pas sous FF (il ne considère qu'un espace).
06 juin 2008 à 11:56
CaptNCook a écrit
tu peux même faire :
var cd = ret.getElementsByTagName("CD");
var codecli = ret.getElementsByTagName("CODECLI");
var nomcli = ret.getElementsByTagName("NOMCLI")
var nbcd= ret.getElementsByTagName("NBCD")
if(cd.length>0) {
for(i in cd) {
szCodeCli = codecli[i].childNodes[0].nodeValue;
szNomCli = nomcli[i].childNodes[0].nodeValue;
szNbCd = nbcd[i].childNodes[0].nodeValue;
}
}
else {
//rien
}
Ah oui, c'est plus joli (et plus propre).
/me Léchouille CaptNCook
06 juin 2008 à 11:58
Bon, conservatoire time. Je finirai lundi.
Merci encore à tous o/
06 juin 2008 à 12:04
si c'est juste pour faire un select au final, tu as autocomplete basé sur scriptaculous/prototype
url : http://blog.pascal-martin.fr/post/Scriptaculous-Ajax.Autompleter-suggestions-pour-la-saisie-dune-ville
06 juin 2008 à 12:12
Quand un nœud contient un texte trop long, il répartit le texte sur plusieurs sous nœud. Donc, il faut faire :
longtexte = xml.getElementsByTagName('longtexte').childNodes;
for(i in longtexte) {
if(longtexte[i].nodeValue != null)
document.getElementById('longtexte').innerHTML += longtexte[i].nodeValue;
}
24 juin 2008 à 13:33
Tu mets ça pour un cas que je pourrais avoir ou juste pour info ?
(en tout cas, merci de l'info :)
24 juin 2008 à 14:38
Pour ton histoire d'espaces tu peux mettre des nbsp; à la place des espaces.
24 juin 2008 à 15:05
ma solution avec autocomplete tu peux mettre ce que tu veux, même des tableaux, tant que chaque ligne de données est bien un
24 juin 2008 à 17:41
Répondre au sujet
Vous devez être identifié pour participer à ce topic.

Nicolas le jardinier