Je suis un petit nouveau sur le forum (et nouvel adepte de Javascript au passage).
Je rencontre un probleme avec un code lorsque je l'utilise avec Safari.
Il y a deux parties: une partie php qui renvoie une reponse XML
et une partie html+javascript qui envoie la requete au serveur et la lit.
Tout fonctionne tres bien sous Firefox ou IE, mais pas sous Safari donc (et j'ai beau retroune la chose dans tous les sens, je ne trouve pas mon erreur).
Ici, responseXML renvoie null sous Safari.
Le code php (bonjour.php)
<?php
header("Content-Type: text/xml : charset=utf-8");
header("Cache-Control: no-cache , private");
header("Pragma: no-cache");
echo('<?xml version="1.0" encoding="utf-8"?>');
echo("<list>");
echo("<bonjour> bonjour </bonjour>");
echo("</list>");
?>
le code html/javascript
Code : Tout sélectionner
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript">
function createXMLHttp(){
var resultat=null;
try{
resultat=new XMLHttpRequest();
}
catch(e) {
try {
resultat=ActiveXObject("Msxml2.XMLHTTP");}
catch(e){resultat=ActiveXObject("Microsoft.XMLHTTP");}
}
return resultat;
}
var objXHR=new Object;
function initialisation(){
objXHR=createXMLHttp();
objXHR.open("post","bonjour.php",false);
objXHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
objXHR.send(null);
var resultat=objXHR.responseXML;
if (resultat!=null){
var res=resultat.getElementsByTagName("bonjour");
var reponse=document.getElementById("reponse");
reponse.innerHTML=res[0].firstChild.data;
}
else {alert ("resultat nul!");}
};
window.onload=initialisation;
</script>
</head>
<body>
<div id="reponse">Rien</div>
</body>
</html>
Sous Safari, le message d'alerte est declecnhé.
Une idée ? (je commence à devenir fou avec ce truc).
Merci d'avance,
Olivier.
===================================================
News:
====================================================
Apres avoir bcp navigué en quete d'une reponse, j'ai trouve une solution:
j'ajoute
if(navigator.appName=='Netscape') objXHR.overrideMimeType("text/xml");
avant send(null)
et sa fonctionne !
Le test semble necessaire (sinon cela marche avec safari mais plus avev IE !!!)
Youpi !