il a bien marcher sous FireFox / Opera mais pas sous IE, les messages s'affiche mais ma l'envoi a chaque fois quand je clic sur envoyer il recharge la page totalement sans rien envoyer. il y a une solution ?
<?php
session_start();
if ( isset($_SESSION['session']) && !empty($_SESSION['session']))
{
require_once('./connexion.php');
function afficher()
{
$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
$chat = '';//Initialisation de la variable $chat
$res=mysql_query("SELECT pseudo, msg FROM message") or die ('Erreur : '.mysql_error());
while($e=mysql_fetch_row($res))
{
$chat.=$e[1];
}
$reponse->assign('block', 'innerHTML', $chat);//Enfin, on change le contenu du div block par le contenu de $chat
$reponse->script("hideLoadingMessage();");//ON CACHE LE MESSAGE DE CHARGEMENT
return $reponse;
}
//
//Notre fonction PHP envoyer pour envoyer un message
//
function envoyer($donnees_formulaire)
{
$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
$message=$donnees_formulaire['message'];
$pseudo=$donnees_formulaire['posteur'];
mysql_query("INSERT INTO message (pseudo,msg) VALUES ('$pseudo', '$message')") or die ('Erreur : '.mysql_error());
}
$reponse->clear('message', 'value');//On vide le champ contenant le message du posteur
$reponse->call('xajax_afficher');//On appelle la fonction afficher pour afficher les messages et aussi pour que le posteur voit son message à l'écran
$reponse->script("hideLoadingMessage();");//ON CACHE LE MESSAGE DE CHARGEMENT
return $reponse;
}
//
//Ouverture de la librairie xajax
//Instanciation d'un objet de la classe xajax, puis déclaration de nos fonctions php
//
require_once('./xajax_core/xajax.inc.php');
$xajax = new xajax(); //On initialise l'objet xajax
$xajax->setCharEncoding('utf-8');//On précise à xAjax qu'on souhaite travailler en ISO-8859-1
$xajax->register(XAJAX_FUNCTION, 'afficher');//on enregistre nos fonctions
$xajax->register(XAJAX_FUNCTION, 'envoyer');
$xajax->processRequest();//Fonction qui va se charger de générer le Javascript, à partir des données que l'on a fournies à xAjax APRES AVOIR DECLARE NOS FONCTIONS
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php $xajax->printJavascript(); /* Affiche le Javascript */?>
<script type="text/javascript">
function bas()
{
document.getElementById("block").scrollTop=document.getElementById("block").scrollHeight;
}
function refresh()//script javascript qui va appeler le fonction afficher toutes les 5 secondes
{
bas();
printLoadingMessage('Récupération des messages...');
xajax_afficher();
setTimeout(refresh, 3000);
}
function printLoadingMessage(loadingMessageText)
{
if(!loadingMessageText)//Si aucun message personnalisé n'a été précisez on lui donne le message par defaut
{
loadingMessageText = 'Chargement...';
}
var parentNode = document.getElementById('loadingMessage');//On récupère le noeud parent qui est la balise div
var textNode = document.createTextNode(loadingMessageText);//On crée un noeud enfant qui est tout simplement le texte
parentNode.replaceChild(textNode, parentNode.firstChild);//On accroche le texte à la balise div
document.getElementById('loadingMessage').style.visibility='hidden';//Puis on rend hidden le bloc
}
function hideLoadingMessage()
{
document.getElementById('loadingMessage').style.visibility='hidden';//On rend le message inhidden
}
</script>
</head>
<body onload="refresh();">
<img src="images/fond.jpg" width="100%" height="100%" style="position:absolute;">
<table style="position:absolute; z-index:2;">
<tr>
<td class="tuser"><div id="block" style="background-color:#FFFFFF; width: 800px;height: 550px;overflow:auto;" align="left" ></div></td>
</tr>
<tr>
<td class="tuser"><form action="" method="post">
<input type="hidden" size="15" id="posteur" name="posteur" value="<?php echo $_SESSION['pseudo'];?>"/>
<input type="text" size="90" id="message" name="message" autocomplete="off"/>
<input type="submit" value="Envoyer" onclick="printLoadingMessage('Envoi du message...'); xajax_envoyer(xajax.getFormValues(this.form)); return false;" /></form></td>
</tr>
</table>
<div id="loadingMessage" style="font-size: 1px; color: white; visibility: hidden; background-color: white; width: 1%;">Chargement...</div>
<script type="text/javascript">
refresh();//On appelle la fonction refresh() pour lancer le script
</script>
</td></tr></table>
</body>
</html>
<?php
}
else
{
echo"Deconnecter du chat";
header('Location:index.php?p=login');
}
?>
Probleme xAjax et Intrernet Explorer
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.