2010-09-15 4 views
0

J'essaie de charger un contenu spécifique d'un fichier XML vers un div HTML. J'utilise une fonction avec des paramètres pour le faire.Charger du contenu XML spécifique au format HTML

Cette mon appel à la fonction:

loadDoc("news.xml","destak-article","article");

cela devrait envoyer une demande pour le fichier xml, obtenir le contenu de l'étiquette «article» et le mettre sur la «Destak-article» div.

Voici mon corps de la fonction:

 
function loadDoc(url,id,tagname){ 

    if (window.XMLHttpRequest){ 
     xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari 
    } else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 
    } 

    xmlhttp.open("GET",url,false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 

    document.getElementById(id).innerHTML = xmlDoc.getElementsByTagName(tagname)[0].childNodes[0].nodeValue; 
}

Mais cela ne semble pas fonctionner. Sur la console de Chrome je reçois cette erreur:

Cannot call method 'getElementsByTagName' of null
Sur Firebug je reçois:
xmlDoc.getElementsByTagName(tagname)[0] is undefined

Toute aide est très appréciée.

+1

La réponse du serveur avec le type de contenu "text/xml"? Si vous ouvrez le document directement dans le navigateur, cela indique-t-il que le balisage XML est mauvais? –

+0

En effet, j'ai eu quelques erreurs sur mon XML. Certains éléments qui montraient le mauvais chemin. -.- Ça fonctionne maintenant. Je dois étudier plus de XML. Merci Marth pour la solution et tout le monde pour les réponses. –

Répondre

0

Vous devez enregistrer une fonction de gestionnaire qui sera appelée une fois la requête terminée. Vous pouvez voir un example of how to do that here.

Qu'est-ce qui se passe dans votre cas, c'est que vous essayez d'obtenir le xmlDoc immédiatement après l'envoi de la demande et le serveur n'a pas eu le temps de traiter la demande et répondre encore.

+1

Il effectue un appel synchrone - c'est le troisième argument de xmlhttp.open défini sur false. – jira

+0

@ jira whoops - merci pour la correction. – Pat

1

Avez-vous vérifié la réponse du serveur? Utilisez une vérification d'erreur dans votre code. Par exemple:

if (xmlhttp.status == 200) { 
document.getElementById(id).innerHTML = xmlDoc.getElementsByTagName(tagname)[0].childNodes[0].nodeValue; 
} 
else { 
alert('error'); 
} 
Questions connexes