Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Prototype & Script.aculo.us
Prototype & Script.aculo.us Forum d'entraide sur les frameworks Prototype et Script.aculo.us
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/11/2010, 17h18   #1
Invité de passage
 
Inscription : août 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 5
Points : 0
Points : 0
Par défaut PeriodicalUpdater qui s’arrête au rechargement de la page

Bonjour,

J'ai fait un chat simple avec PeriodicalUpdater qui met à jour une DIV.
Un petit champs texte en dessous pour mettre sa phrase.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div id="chat_general">
  </div>
  <div id="text_chat">
  <form method="post" target="_self">
  <input type="text" name="text_in" id="text_in" size="20"  onfocus="javascript:this.value='';">
  <input type="submit" onclick="envoyer_text_chat('user'); return false;" name="valid_text_in" id="valid_text_in" value="OK">
  </form>
  </div>
<script language="text/javascript">
  new Ajax.PeriodicalUpdater('chat_general', 'chat/maj_chat.php', 
  {
    method: 'get',
    frequency: 1,
    insertion: Insertion.Top
    });
  </script>
Ce chat ne s'active que lorsque l'utilisateur est connecté. Petite précision, c'est une connexion utilisateur utilisant AJAX aussi.
Jusque la tout va bien, lorsque l'on se connecte, le chat fonctionne correctement.

Mais lorsque l'on recharge la page (ce qui pourrait arrivé), PeriodicalUpdater ne fonctionne plus. la div du chat ne se recharge pas.
L'envoi du texte fonctionne tres bien, par contre.

Quelqu'un a déjà rencontré ce type de problème ?
Est-ce que j'utilise correctement periodicalupdater ?
Qui est arrivé avant l'oeuf ou la poule ?
Est-ce que Dieu existe, ou bien est-ce une sublimation de l'esprit pour nous rassurer du néant qui nous entoure ?

D'avance merci

PS : lorsque mon utilisateur se connecte, j'utilise une simple commande AJAX qui appel le fichier que j'ai écrit au dessus.

Code :
1
2
3
4
5
6
7
8
9
10
function appel_chat()
{
	new Ajax.Updater(
			'general_chat',
			'chat/chat.php',
			{
				evalScripts: true
			}
			)
}
RE PS : la div "general_chat" est le conteneur de la div "chat_general"
casoars est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 17h47   #2
Modérateur
 
Avatar de gwyohm
 
Inscription : octobre 2007
Messages : 779
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 779
Points : 941
Points : 941
Envoyer un message via Yahoo à gwyohm
Bonjour,
Citation:
Envoyé par casoars Voir le message
Mais lorsque l'on recharge la page (ce qui pourrait arrivé), PeriodicalUpdater ne fonctionne plus. la div du chat ne se recharge pas.
Tu vois quand même les appels AJAX passer dans ta console ?

Tu n'aurais pas un souci lié au fait que tu es déjà connecté ?
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
Pas de question technique par MP
gwyohm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 20h15   #3
Invité de passage
 
Inscription : août 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 5
Points : 0
Points : 0
Non, hélas.
Lorsque la page est rechargée, la console indique une inactivité consternante...

Et j'ai essayé aussi en le mettant accessible hors connexion, mais cela donne le même résultat.

En fait, ca donne l'impression que le chat ne fonctionne correctement que lorsqu'il est appelé par la fonction "appel_chat()".
casoars est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 11h49   #4
Modérateur
 
Avatar de gwyohm
 
Inscription : octobre 2007
Messages : 779
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 779
Points : 941
Points : 941
Envoyer un message via Yahoo à gwyohm
Citation:
Envoyé par casoars Voir le message
En fait, ca donne l'impression que le chat ne fonctionne correctement que lorsqu'il est appelé par la fonction "appel_chat()".
Etant donné que la fonction appel_chat utilise un Updater sur general_chat (la div conteneur de chat_general), n'est-ce pas le résultat de cet Updater (l'appel à chat/chat.php) qui dessine ce qui est nécessaire en terme de HTML et/ou javascript pour démarrer le PeriodicalUpdater ?
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
Pas de question technique par MP
gwyohm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h40   #5
Invité de passage
 
Inscription : août 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 5
Points : 0
Points : 0
Oui, je vois ce que tu veux dire. j'ai peut-être oublié de dire que chat.php contient le DOM du chat et le script periodicalupdater (le 1er code que j'affiche dans ce topic).

Sauf que lorsque j'arrive sur mon site pour la première fois, j'appelle chat/chat.php avec un simple "include" en PHP.
Je met mon fichier chat.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
if (isset($_SESSION['connect']) and $_SESSION['connect'] == 'ok')
{
  $user = $_SESSION['login'];
  echo '<div id="chat_general">
  </div>
  <div id="text_chat">
  <form method="post" target="_self">
  <input type="text" name="text_in" id="text_in" size="20" onfocus="javascript:this.value=\'\';">
  <input type="submit" onclick="envoyer_text_chat(\''.$user.'\'); return false;" name="valid_text_in" id="valid_text_in" value="OK">
  </form>
  </div><script language="text/javascript">
  new Ajax.PeriodicalUpdater(\'chat_general\', \'chat/maj_chat.php\', 
  {
    method: \'get\',
    frequency: 1,
    insertion: Insertion.Top
    });
  </script>';
  echo '';
  if (isset($_GET['valid_text_in']) and $_GET['valid_text_in'] == 'ok')
  {
    $date = date('Y-m-d H:i:s');
    $message = $_GET['text_in'];
    $user = $_SESSION['login'];
    if (empty($message))
    {}
    else
    {
    $sql = 'INSERT INTO chat (id,user,message,date) VALUE (NULL,\''.$user.'\',\''.$message.'\',\''.$date.'\')';
  	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  	}
  }
  else
  {}
}
else
{}
Bien sur, mon fichier chat.php controle si l'utilisateur est connecté.

Donc le DOM du chat dans mon index.php :
Quand l'utilisateur est déconnecté :
Code :
<div id="general_chat"></div>
Quand l'utilisateur est connecté :
Code :
1
2
3
4
5
6
7
8
<div id="general_chat">
<div id="chat_general"></div>
<div id="text_chat">
<form method="post" target="_self">
<input type="text" name="text_in" id="text_in" size="20" onfocus="javascript:this.value='';">
<input type="submit" onclick="envoyer_text_chat('casoars'); return false;" name="valid_text_in" id="valid_text_in" value="OK">
</form>
</div>
Quand l'utilisateur est connecté et qu'il recharge la page :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div id="general_chat">
<div id="chat_general"></div>
<div id="text_chat">
<form method="post" target="_self">
<input type="text" name="text_in" id="text_in" size="20" onfocus="javascript:this.value='';">
<input type="submit" onclick="envoyer_text_chat('casoars'); return false;" name="valid_text_in" id="valid_text_in" value="OK">
</form>
</div>
<script language="text/javascript">
  new Ajax.PeriodicalUpdater('chat_general', 'chat/maj_chat.php', 
  {
    method: 'get',
    frequency: 1,
    insertion: Insertion.Top
    });
</script>
</div>
Je vois toujours pas pourquoi, mon script PeriodicalUpdater ne fait pas son taf lors du rechargement... c'est vrai, quoi ?! qui s'est qui paye ?

Crois-tu qu'il (le script periodicalupdater) pourrait ne plus fonctionné s'il est appelé 2 fois ?
casoars est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h21.


 
 
 
 
Partenaires

Hébergement Web