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

  FORUM HardWare.fr
  Programmation
  PHP

  [Ajax] Script bloqué sous IE avec balise XML vide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Ajax] Script bloqué sous IE avec balise XML vide

n°1724842
forzayalta
Posté le 26-04-2008 à 10:21:02  profilanswer
 

Bonjour tout le monde,
 
j'ai un petit problème en Ajax. Je créé un script pour remplir une liste déroulante en fonction du choix de l'utilisateur dans premier une première liste déroulante. Rien de bien révolutionnaire. Or, dès qu'une balise vide est retournée dans le document XML, mon script ne retourne plus rien.
Voici le contenu de mon document XML:

Code :
  1. <exemple>
  2. <id>127</id>
  3. <ref>PR01</ref>
  4. <nom/>
  5. <id>128</id>
  6. <ref>PR02</ref>
  7. <nom/>
  8. <id>129</id>
  9. <ref>PR03</ref>
  10. <nom/>
  11. <id>130</id>
  12. <ref>PR04</ref>
  13. <nom/>
  14. <id>131</id>
  15. <ref>PR05</ref>
  16. <nom/>
  17. <id>132</id>
  18. <ref>PR11</ref>
  19. <nom/>
  20. </exemple>


 
Et voici le javascript utilisé pour afficher le tout:

Code :
  1. function get_couleurs(revetement, caracteristique)
  2. {
  3.  var xhr=null;
  4.  if (window.XMLHttpRequest)
  5.   xhr = new XMLHttpRequest();
  6.  else if (window.ActiveXObject)
  7.   xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  8.  //on définit l'appel de la fonction au retour serveur
  9.  xhr.onreadystatechange = function()
  10.  {
  11.   if (xhr.readyState==4)
  12.     {
  13.      for (i = document.getElementById('revetement_couleur_'+caracteristique).length-1; i>=0; i--)
  14.     document.getElementById('revetement_couleur_'+caracteristique).options[i] = null;
  15.      var docXML= xhr.responseXML;
  16.      var idCouleurs = docXML.getElementsByTagName("id" );
  17.    var tabIdCouleurs = new Array();
  18.    for (i = 0; i < idCouleurs.length; i++)
  19.     tabIdCouleurs[i] = idCouleurs.item(i).firstChild.data;
  20.    var nomsCouleurs = docXML.getElementsByTagName("nom" );
  21.    var refsCouleurs = docXML.getElementsByTagName("ref" );
  22.    for (i = 0; i < refsCouleurs.length; i++)
  23.    {
  24.     var nomCoul = '';
  25.     if (parseInt(nomsCouleurs.item(i).firstChild.data.value) != 0)
  26.       nomCoul = ' '+nomsCouleurs.item(i).firstChild.data;
  27.     document.getElementById('revetement_couleur_'+caracteristique).options[i] = new Option(refsCouleurs.item(i).firstChild.data+nomCoul, tabIdCouleurs[i]);
  28.    }
  29.    if (idCouleurs.length == 0)
  30.     document.getElementById('revetement_couleur_'+caracteristique).options[0] = new Option('Aucune couleur trouvée', '0');
  31.    document.getElementById('revetement_couleur_'+caracteristique).disabled = false;
  32.   }
  33.  };
  34.  //on affiche le message d'acceuil
  35.  document.getElementById('revetement_couleur_'+caracteristique).options[0] = new Option('Chargement en cours', '0');
  36.  document.getElementById('revetement_couleur_'+caracteristique).disabled = true;
  37.  //on appelle le fichier php
  38.  xhr.open("GET", "***/***.php?revetement="+revetement, true);
  39.  xhr.send(null);
  40. }


 
Le script fonctionne bien sous Firefox et IE, mais dès qu'une valeur renvoyée dans le XML est vide, ca ne fonctionne plus
 
Pour info encore, voici comment je génère le doctype et la balise <nom> dans le fichier php:

Code :
  1. header('Content-Type: text/xml; charset=ISO-8859-15');
  2. echo "<?xml version=\"1.0\"?>\n";
  3. echo "<exemple>\n";
  4. .
  5. .
  6. .
  7. .
  8. .
  9. $nom = ($row['nom_couleur'] != '') ? stripslashes($row['nom_couleur']) : '';
  10. echo "<nom>".$nom."</nom>\n";


 
J'ai également essayé avec

Code :
  1. $nom = ($row['nom_couleur'] != '') ? stripslashes($row['nom_couleur']) : ' ';

ou

Code :
  1. $nom = ($row['nom_couleur'] != '') ? stripslashes($row['nom_couleur']) : '&nbsp;';

rien ne fonctionne. La seule solution qui fonctionne est la suivante:

Code :
  1. $nom = ($row['nom_couleur'] != '') ? stripslashes($row['nom_couleur']) : '-';

mais je me retrouve ensuite avec un '-' qui ne sert à rien dans la deuxième liste déroulante.

mood
Publicité
Posté le 26-04-2008 à 10:21:02  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Ajax] Script bloqué sous IE avec balise XML vide

 

Sujets relatifs
Problème avec script en php avec iis, droit sur serveur distant[Résolu 2 fois ;)] script PHP liste deroulante et base de données
application d'authentification webproblème de menu(balise a:hover)
IE affiche un padding bien plus grand que 10pxMenu flash avec AJAX, comment faire le lien?
[PHP] Problème avec la un script tout simple[php + Ajax] include "dynamique?" [résolu]
script sur textescript pour faire apparaître des blocs de texte
Plus de sujets relatifs à : [Ajax] Script bloqué sous IE avec balise XML vide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR