J'ai le code javascript suivant :
function executer(form) {
var xhr_object = null;
var texteRequete = document.getElementById('requete').value;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
xhr_object = new XMLHttpRequest();
if (xhr_object.overrideMimeType) {
xhr_object.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
xhr_object = new ActiveXObject("Msxml2.XMLHTTP" );
} catch (e) {
try {
xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
} catch (e) {}
}
}
xhr_object.open("POST", "executionRequete.php", true);
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" );
xhr_object.onreadystatechange = function anonymous() {
if(xhr_object.readyState == 4) {
var xmldoc = xhr_object.responseXML;
document.getElementById('reponse').innerHTML = "";
var conteneur = xmldoc.getElementById('contenu');
document.getElementById('reponse').appendChild (conteneur);
document.getElementById('reponse').style.display = 'block';
}
};
xhr_object.send("requete="+texteRequete);
}
|
Qui fait donc appel au fichier php suivant :
<?php
$sql_serveur="localhost";
$sql_user="***";
$sql_passwd="***";
$sql_bdd="cheerup";
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
$db_selected = mysql_select_db($sql_bdd,$db_link);
if (!$db_selected) {
die ('Impossible d\'utiliser la base : ' . mysql_error());
}
$sql_bdd="cheerup";
$requete = ((isset($_GET['requete']))?$_GET['requete']:((isset($_POST['requete']))?$_POST['requete']:null));
header("Content-type: text/xml" ); echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n" );
echo("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n" );
echo("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n" );
echo("<head>\n" );
echo("<title>Réponse à la requète SQL</title>\n" );
echo("<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=iso-8859-1\"/>\n" );
echo("<meta name=\"Cache-Control\" content=\"no-cache, must-revalidate\"/>\n</head>\n" );
if ($requete == null) {
echo("<body><div id=\"contenu\"><p>Demande invalide</p></div></body>\n</html>" );
exit();
}
$reponse = mysql_query($requete);
if ($reponse !=false) {
echo("<body>" );
echo("<p>Voici le résultat de votre requète :</p>" );
echo("<div id=\"contenu\"><table border=\"1\"><tbody>" );
while ($row = mysql_fetch_row($reponse)) {
echo("<tr>" );
foreach ($row as $item) {
echo ("<td>".($item?htmlentities($item):" " )."</td>" );
}
echo("</tr>" );
}
echo("</tbody></table></div>" );
echo("</body>" );
}
else {
echo("<body><div id=\"contenu\"><p>".mysql_error()."</p></div></body>" );
}
echo ("</html>" );
?>
|
Sous Firefox aucun probleme, mon code recupere ce que je veux dans le fichier xhtml généré et me laffiche dans le div "reponse" de mon document.
Sous Internet Explorer ca bloque. la fonction responseXML ne provoque pas d'erreur mais il me charge un document entierement vide ce qui fait que la ligne :
var conteneur = xmldoc.getElementById('contenu'); |
provoque un arret d'execution du script...
QQn pourrait-il m'aider? ca fait des heures que je bloque sur ce probleme...
Eric