15-03-2008, 03:52 PM
(Modification du message : 08-09-2008, 07:12 PM par Sephi-Chan.)
Bonjour, ça faisait longtemps et je reviens avec beaucoup de cheveux en moins à cause d'un problème Ajax :
lorsque je lance ma fonction sur ma page html, je créé un objet xmlhttp puis j'ouvre une page de traitement en PHP et je récupère la réponse dans une variable mais là elle est complètement vide....
Voici le script qui se trouve dans la première page :
ça devrait rendre un message alert avec du texte qui vient de la page afficherRecettes.php :
lorsque je lance ma fonction sur ma page html, je créé un objet xmlhttp puis j'ouvre une page de traitement en PHP et je récupère la réponse dans une variable mais là elle est complètement vide....
Voici le script qui se trouve dans la première page :
Code :
<script language="Javascript">
function afficherRecettes(){
var xhr;
xhr = creerObjetXMLHTTP();
if(!xhr){ alert("Votre navigateur ne supporte pas les requetes HTTP.");}
else {
var url="ajax/traitementphp/afficherRecettes.php";
// fait la demande au serveur
xhr.open("GET",url,true);
xhr.onreadystatechange = function(){
// si le traitement est complet
if(xhr.readyState == 4) {
if(xhr.status == 200){
var xmlReponse = xhr.responseXML;
xmldocumentElement = xmlReponse.documentElement;
message = xmldocumentElement.firstChild.data;
alert(xmlReponse); // Erreur ici
}
}
}
xhr.send(null);
}
}
</script>
ça devrait rendre un message alert avec du texte qui vient de la page afficherRecettes.php :
Code PHP :
<?php
session_start();
header('Content-Type: text/html; charset=ISO-8859-1');
echo '
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
include "../../bibliotheque.php";
connection();
$query='SELECT c.Nom, ca.Nb_Points FROM competences c INNER JOIN competences_acquises ca ON ca.Id_Competence=c.Id WHERE ca.Id_joueur='.$_SESSION['Id'];
$requete=mysql_query($query) or die(mysql_error());
$i=0;
while ($rep=mysql_fetch_assoc($requete)){
$tabCompetences[$i]['nom']=$rep['Nom'];
$tabCompetences[$i]['points']=$rep['Nb_Points'];
$i++;
}
$resul='<table><tbody>
';
$nb_comp=count($tabCompetences);
for ($i=0,$j=0;$i<$nb_comp ;$i++,$j++){
$num=$j%2;
$resul=$resul.'<tr class="fonce'.$num.'">
<td>'.$tabCompetences[$i]['nom'].'</td><td>'.floor($tabCompetences[$i]['points']/10).'</td>
<td>'.$tabCompetences[$i]['points'].'/'.((floor($tabCompetences[$i]['points']/10)+1)*10) .'</td>
</tr>';
}
$resul=$resul.'
</table></tbody>';
echo '
<response>
'.$resul.'
</response>';
?>
ça rend
Code :
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<response>
<table><tbody>
<tr class="fonce0">
<td>Bagarre</td><td>1</td>
<td>10/20</td>
</tr>
</table></tbody>
</response>
Et le code pour creerObjetXMLHTTP :
Code :
function creerObjetXMLHTTP() {
var xmlhttp = false;
try {
xmlhttp = new XMLHttpRequest();
}
catch(e)
{
//pour IE6 et plus ancien
var XMLHTTPversions = new Array ('Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
// toutes les versions pour IE
// on les teste toutes
for (var i=0; i<XMLHTTPversions.length && !xmlhttp; i++){
try {
xmlhttp = new ActiveXObject(XMLHTTPversions[i]);
}
catch (e) {} // ignore une erreur potentielle
}
}
return xmlhttp;
}
Donc si quelqu'un a une idée je suis preneur :p