Depuis peu je créer un chat et évidemment j'ai une erreur dans mon script php ou javascript ! Pourtant le formulaire est posté correctement (addMessage), et les informations sont ensuite récupérés avec getMessages (Et Firebug affiche pourtant bien les informations json récupérés par un fichier php).
Mais le problème est que rien ne s'affiche et étant débutant dans ces languages je vous demande votre aide.
Je pense que l'erreur est obligatoirement présente dans un des deux fichiers.
De plus le retour json indique peut-être un problème, et il n'est pas afffiché avec le .append() .
Voici le script javascript :
[javascript]
var url="tchatAjax.php";
var lastid=0;
var timer = setInterval(getMessages,2000)
var destinataire = "";
$(function() {
element = document.getElementById('tchat');
element.scrollTop = element.scrollHeight;
$('form').submit(function(){
var message = $("input:text").val();
if (message != "") {
clearInterval(timer);
$.ajax({
type: "POST",
url: url,
dataType: "JSON",
data: {action:"addMessage",message:message,destinataire:destinataire},
success: function(data){
if(data.erreur=="ok1"){
getMessages();
}
}
});
var message = $("input:text").val("");
timer = setInterval(getMessages,2000);
}
return false;
});
});
function getMessages(){
$.ajax({
type: "POST",
url: url,
dataType: "JSON",
data: {action:"getMessages",lastid:lastid,destinataire:destinataire},
success: function(data){
if(data.erreur=="ok2"){
$("#tchat").append(data.result);
lastid = data.lastid;
element = document.getElementById('tchat');
element.scrollTop = element.scrollHeight;
}
}
});
return false;
};
[/javascript]
Ensuite voici le php qui traite la requête ajax en json :
<?php
session_start();
require ("connect.php");
$d = array();
if(isset($_SESSION['username']) || !empty($_SESSION['username']) || isset($_POST["action"])){
/**
* Récupération des informations postés
* et de toute les variables.
**/
extract($_POST);
$expediteur = mysql_real_escape_string($_SESSION['username']);
$destinataire = mysql_real_escape_string($destinataire);
$date = time();
$vue = 0;
/**
* Action: addMessage
* Permet l'ajout d'un message
**/
if($_POST["action"]=='addMessage') {
$message = mysql_real_escape_string($message);
$sql = "INSERT INTO messages(expediteur,destinataire,message,date,vue) VALUES('$expediteur','$destinataire','$message','$date','$vue')";
mysql_query($sql) or die(mysql_error());
$d["erreur"] = "ok1";
}
/**
* Action: getMessages
* Permet l'affichage des derniers messages
**/
if($_POST["action"]=='getMessages') {
$lastid = floor($lastid);
$sql = "SELECT * FROM messages WHERE id>$lastid AND expediteur='$expediteur' AND destinataire='$destinataire' OR id>$lastid AND expediteur='$destinataire' AND destinataire='$expediteur' ORDER BY date ASC";
$req = mysql_query($sql) or die(mysql_error());
$d["result"] = "";
$d["lastid"] = $lastid;
while($data = mysql_fetch_assoc($req)){
$d["result"] .= '<p><strong>'.$data['expediteur'].'</strong> ('.date("d/m/Y H:i:s",$data["date"]).') : <br/>'.htmlspecialchars($data['message']).'</p>';
$d["lastid"] = $data["id"];
}
$d["erreur"]="ok2";
}
}
/** Transmission des informations en JSON **/
echo json_encode($d);
?>
Et voici la réponse du serveur pour face à la requête ajax addMessage (En json) :Code : Tout sélectionner
{
"erreur":"ok1"
}
Là c'est la seconde réponse json pour la récupération du message avec getMessages :
Code : Tout sélectionner
{
"result":"<p><strong>PSEUDO<\/strong> (31\/12\/2013 18:20:44) : <br\/>MESSAGE<\/p>",
"lastid":"340",
"erreur":"ok2"
}
Aidez-moi svp cela fait bien plus d'un mois que je traque cette erreur !