Page 1 sur 1

Tag XML initialisé à vide + AJAX

Posté : 31 mai 2007, 17:13
par Ish
bonjour,

Je vous écris pour m'eclaircir sur un problème que j'ai en DOM:

Code : Tout sélectionner

//Lorque je fais ma requete, il se peut que dans ma base, des attributs peuvent etre null //Et je veux que lorsque je fais ma boucle pour toutes les occurrences de ma requête, je fais les tags XML adéquates, //cependant , j'ai des problèmes lorsque l'attribut est de valeur null if ($data[$nomAttribut] == ""){ echo "<".$nomAttribut."></".$nomAttribut.">\n"; <- J'essaie de faire un tag null }else{ echo "<".$nomAttribut.">" .$data[$nomAttribut]. "</".$nomAttribut.">\n"; }
ensuite lorsque je veux récupérer les données des balises grâce a la fonction

document.getElementById("idAnneeImmo").value=idAnneeImmo.item(0).firstChild.data;
et que ce tag a eté initialisé a vide, mon naviguateur me fait une erreur du type

etablissement.item(0).firstChild has no properties

Et je voulais savoir comment initialisé un tag XML a null

Posté : 31 mai 2007, 22:36
par iut
j'ai eu le même problème que toi, mais je n'ai jamais y remdier si quelqu'un aurait la gentillesse de lui répondre ce serait sympa.

Posté : 31 mai 2007, 22:42
par Cyrano
Crée un élément vide dans ce cas :
if (empty($data[$nomAttribut]))
{
    echo "<". $nomAttribut ." />\n";
}
else
{
    echo "<". $nomAttribut .">". $data[$nomAttribut] ."</". $nomAttribut .">\n";
}

Posté : 31 mai 2007, 23:08
par iut
et kan je ferait ****.item(0).firstChild.data pour l'élément vide, il va me récuperé quoi comme valeur?

Posté : 31 mai 2007, 23:11
par Cyrano
Probablement NULL : essaye, tu verras bien : sinon, tu pourrais aussi bien ne générer une balise que si tu as un contenu à mettre dedans :
if (!empty($data[$nomAttribut]))
{
    echo "<". $nomAttribut .">". $data[$nomAttribut] ."</". $nomAttribut .">\n";
}

Posté : 31 mai 2007, 23:15
par iut
Et si Je dois récuperer toutes valeurs même si elles ont la valeur null dans la Base.

Et dans ma fonction Ajax onreadychange, je fais comment pour recuperer des tags VIDES?

Posté : 01 juin 2007, 07:47
par Cyrano
Au moment de récupérer le retour du serveur, tu récupère une chaine envoyée par l'application appelée : le problème est donc coté serveur dans la manière de traiter les balises vides et de formater la sortie selon ce que tu veux faire.

Sans voir ton code de récupération de données, difficile de t'aider plus.

Posté : 01 juin 2007, 10:50
par iut
Jai pas mis le code Complet, mais je sais qu'il est correct
// On défini ce qu'on va faire quand on aura la réponse
	  xhr.onreadystatechange = function(){
	      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
	      if(xhr.readyState == 4 && xhr.status == 200){
var idAnneeImmo = docXML.getElementsByTagName("idAnneeImmo");
 document.getElementById('idAnneeImmo').value=idAnneeImmo.item(0).firstChild.data;<- me fait un erreur
}
}
page php qui fait les tags xml (appelé par ma fonction Ajax)
echo "<idAnneeImmo></idAnneeImmo>\n";

Posté : 01 juin 2007, 14:11
par Cyrano
regarde ceci :
document.getElementById('idAnneeImmo')...
Il est logique que ça ne fonctionne pas puisque tu essayes de pointer sur une balise en la cherchant par son identifiant... qui n'existe pas.

Utilise getElementsByTagName() à la place : ça va te retourner un tableau des éléments correspondant, donc il faudra ajouter un index numérique.