[AJAX] responseXml == null
Bonjour,
je débute avec ajax. J ai donc voulu commencer par mettre en place un exemple que tous les tutoriaux pour débutant propose, à savoir une page web avec un lien qui va executer une requete au serveur pour allé chercher des infos sous forme Xml.
Donc voici la page qui me fourni du xml :
Code:
1 2 3 4 5 6 7
| <%@ page language="java" contentType="text/xml" pageEncoding="ISO-8859-1" session="false"%>
<?xml version="1.0" encoding="utf-8"?>
<exemple>
<donnee> donnee 1 </donnee>
<donnee> donnee 2 </donnee>
<donnee> donnee 3 </donnee>
</exemple> |
et la page web avec son javascript:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| <%@ taglib uri="/WEB-INF/tld/portlet.tld" prefix="portletAPI"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="false"%>
<portletAPI:init />
<script type="text/javascript">
<!--
function ajax()
{
var xhr=getXMLHttpRequest();
xhr.onreadystatechange = function() { alert_ajax(xhr); };
//on appelle le fichier reponse.txt
xhr.open("GET", "GenXml.jsp", true);
xhr.send(null);
}
function alert_ajax(xhr) {
if (xhr.readyState==4) {
alert(xhr.responseXML);
alert(xhr.status);
var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee")
//on fait juste une boucle sur chaque element "donnee" trouvé
for (i=0;i<items.length;i++) {
alert(items.item(i).firstChild.data);
}
}
}
// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHttpRequest(){
var xhr=null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e1) {
xhr = null;
}
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
}
return xhr;
}
//-->
</script>
<P>
<a href="javascript:ajax();">Cliquez-moi !</a>
</P> |
Lorsque je clique sur mon lien, j'ai une erreur : "docXML has no properties" me dit Firebug.
Et pour cause : le alert(xhr.responseXML) m'affiche null.
Cepandant, le alert(xhr.status) vaut 200 ce qui signifie que la ressource a bien été trouvée, il me semble.
Je ne sais pas pourquoi le xhr.responseXML me retourne null.
Si qq1 a une idée je lui en serai grés de m en faire part :).
J'ai comme environnement server des Portlets, je sais pas si ça peut influer le comportement du fonctionnement AJAX..?