* Erreur dans un chat Ajax PHP jquery *
Posté : 13 janv. 2014, 23:05
Bonjour
, j'ai un problème et j'ai vraiment tout essayé pour le résoudre mais impossible : J'apprend la programmation php,sql . Mais je me suis mis au javascript/ajax/jquery qui sont assez complexes.
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 :
Pour moi il n'y a aucun problème dans cette requête puisque le message est postée et le message ok1 est bien présent.
Là c'est la seconde réponse json pour la récupération du message avec getMessages :
C'est ici que ça pose problème : Le json semble correct mais le nouveau message récupéré ici n'est pas affiché et en plus Firebug m'affiche ce résultat json en boucle ! 
Aidez-moi svp cela fait bien plus d'un mois que je traque cette erreur !
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 !