Emettre un son sur Messagerie

Mammouth du PHP | 661 Messages

04 janv. 2013, 19:15

non, ce n'est pas bon ;)

ton objet ajax va lancer la fonction sucess après avoir récupérer le contenue de la page chat/chat.html

Donc il te faut faire le test à ce moment là :

[javascript]
function refreshChat() {
$.ajax({
url: "chat/chat.html",
ifModified:true,
success: function(content){
if($('#room').html() != content) {
alert('du nouveau') ;
$('#room').html(content);
}
}
});
setTimeout(refreshChat, 5000);
}
[/javascript]

par contre, en le relisant, je ne suis pas certain que la condition soit nécessaire vu la propriété ifModified, mais n'utilisant pas jQuery, je ne suis pas sur de son utilisation ;)

Eléphant du PHP | 134 Messages

04 janv. 2013, 19:27

Il affiche : Mon design mais pas les messages

Lorsque je post un message , il affiche alors tout les messages et une fenêtre toutes les 5 s " du nouveau ".

Et si change de page , puis je reviens sur mon chat plus de messages , il faut que je post un nouveau un message pour les voir .

Eléphant du PHP | 134 Messages

04 janv. 2013, 19:38

J'avais oublier a la fin : refreshChat(); mais au lieu du son il affiche " du nouveau " , il ne met " du nouveau" que lorsque j'ai message mais toute les 5 secondes.

Code : Tout sélectionner

/** /** * Un mini-Chat en jQuery/Php * par Jay Salvat - http://blog.jaysalvat.com/ */ $(function() { $('#chat form').submit(function() { var user = $('#chat input[name=user]').val(); var message = $('#chat input[name=message]').val(); $.post('chat/chat.php', { 'user':user, 'message':message }, function() { refreshChat(); }); $('#chat input[name=message]').val(''); return false; }); function refreshChat() { $.ajax({ url: "chat/chat.html", ifModified:true, success: function(content){ if($('#room').html() != content) { alert('du nouveau') ; $('#room').html(content); } } }); setTimeout(refreshChat, 5000); } refreshChat(); });

Mammouth du PHP | 661 Messages

05 janv. 2013, 11:09

Bonjour,

Donc : tu as une alerte avec écrit "du nouveau" toutes les 5 secondes, qu'il y est un nouveau message ou non, c'est bien ça ?
=> ça signifie que ton script Ajax détecte une modification de contenue à chaque requête ... :(
=> et que la condition if($('#room').html() != content) indique que le contenue de #room est différent de la réponse ... Blizzard (ya pas a dire, j'aime pas jQuery) ...
peux tu tester ça :

[javascript]
if($('#room').innerHTML != content) {
alert('du nouveau') ;
$('#room').innerHTML = content ;
}[/javascript]

Et me dire si tu as toujours une alerte toutes les 5 secondes, même si il n'y a pas de nouveau message ...

Eléphant du PHP | 134 Messages

05 janv. 2013, 14:07

Bonjour

Oui dur le jquery , je vais essayer ta solution , je viens de rentrer du travail , donc je le fais et je tiens au courant.

Mais enfin de compte si je comprend le script , j'ai un doute qu'il détecte du nouveau contenu , il fait simplement un rafraîchissement tout les 5 secondes.

Eléphant du PHP | 134 Messages

05 janv. 2013, 14:22

RE avec cette solution je n'ai plus l'affichage des messages , seulement le formulaire avec envoie pour poster un message , j'ai quand même essayer d'envoyer un message avec un autre PC pour voir si nouveau message le chat se réactualise , mais non rien , il se réactualise seulement toute les 50 secondes même si pas de message puisque que je l'ai programmer ainsi.

Donc il ne détecte pas que le contenu à changer . Encore un grand Merci pour aide. J'espère que l'on va trouver une solution.

Code : Tout sélectionner

/** /** * Un mini-Chat en jQuery/Php * par Jay Salvat - http://blog.jaysalvat.com/ */ $(function() { $('#chat form').submit(function() { var user = $('#chat input[name=user]').val(); var message = $('#chat input[name=message]').val(); $.post('chat/chat.php', { 'user':user, 'message':message }, function() { refreshChat(); }); $('#chat input[name=message]').val(''); return false; }); function refreshChat() { $.ajax({ url: "chat/chat.html", ifModified:true, success: function(content){ if($('#room').innerHTML != content) { alert('du nouveau') ; $('#room').innerHTML = content ; } } }); setTimeout(refreshChat, 50000); } refreshChat(); });

Mammouth du PHP | 661 Messages

07 janv. 2013, 09:57

Salut :

Ya un truc que je ne pige pas,j'ai donc telechargé le script, et l'ai testé en local, et chez moi le comportement est bon !...
la methode
[javascript]success: function(content){
playSong();
$('#room').html(content) ;
}[/javascript]
n'est appelée que lorsqu'il y a du nouveau à afficher !

Je ne pige pige pas pourquoi chez toi cela ne fonctionne pas !

Peux tu nous donner une url, et la confg (serveur / navigateur)

@+

Eléphant du PHP | 134 Messages

08 janv. 2013, 23:20

Bonsoir

Excuse moi pour le retard mais très occupé au travail.

Entre j'ai abandonné cette solution , je me suis fait un minichat avec un tuto bien sûr pas assez calé , lol

Là j'ai un souci pas moyen de retirer les \ avant les apostrophes , bien connu sur le web , mais pas de solution pour le tuto que j'ai suivi , Merci si tu peux m'aider.

Code : Tout sélectionner

<?php header("content-type: application/json; charset=utf-8"); // Version avec PDO $conn = new PDO('mysql:host=localhost;dbname=*****', '****', '*****'); $currentTimestamp = time(); $lastTimestamp = (isset($_GET['lastTimestamp'])) ? $_GET['lastTimestamp'] : ($currentTimestamp-1); if (!empty($_POST['pseudo']) && !empty($_POST['message'])) { $message = htmlspecialchars ($_POST['message']); $pseudo = htmlspecialchars($_POST['pseudo']); mysql_query("SET NAMES UTF8"); [b]// ne marche pas [/b] $sth = $conn->prepare("INSERT INTO minichat(pseudo,message,timestamp) VALUES(:pseudo, :message, :timestamp)"); $sth->bindParam(":pseudo", $pseudo); $sth->bindParam(":message", $message); $sth->bindParam(":timestamp", $currentTimestamp); $sth->execute(); } $sth = $conn->prepare("SELECT * FROM minichat WHERE timestamp > :lastTimestamp ORDER BY id DESC LIMIT 0,10"); $sth->bindParam(":lastTimestamp", $lastTimestamp); $sth->execute(); $result_utf8 = $sth->fetchAll(PDO::FETCH_ASSOC); if(count($result_utf8) > 0) ini_set("zlib.output_compression", "On"); echo json_encode ($result_utf8); ?>