la mise à jour d'un div ne se fait pas

Par AaFrederic Husson, il y a 8 ans


Bonjour je crée un tchat en php et ajax mais j'ai un soucis la mise a jour de mes profils ne se fait pas au submit du formulaire
par contre les données sont bien la si je recharge la page

voici mon code:

<?php session_start(); include "".$_SERVER['DOCUMENT_ROOT']."/include/mysql_connect.php"; ?> <script> $(document).ready(function (e) { $('#ajoute_mess').on('submit', function(e) { e.preventDefault(); var $form = $(this); $.ajax({ url: '/fiche_cli/affiche_mess.php', method: 'GET', dataType: 'html', data: $form.serialize() }).then(function (data) { $("#affiche_mess").html(data); // Mise à jour des messages document.getElementById('list_profil').innerHTML; // Mise à jour des profils de contact document.forms['ajoute_mess'].reset(); // Reset du formulaire document.getElementById('affiche_mess').scrollTop=document.getElementById('affiche_mess').scrollHeight; // Baisse la scrollbar }).catch(function (error) { console.log(error); }); }); }); document.getElementById('affiche_mess').scrollTop=document.getElementById('affiche_mess').scrollHeight; </script> <br> <div class="chatter"> <div id="list_profil" class="chat_profils"> <?php include "".$_SERVER['DOCUMENT_ROOT']."/fiche_cli/liste_profil.php"; ?> </div> <div class="chat_ecrire"> <?php include "".$_SERVER['DOCUMENT_ROOT']."/fiche_cli/ajoute_mess.php"; ?> </div> <div id="affiche_mess" class="messages"> <?php include "".$_SERVER['DOCUMENT_ROOT']."/fiche_cli/affiche_mess.php"; ?> </div> </div>

4 réponses

G1.3, il y a 8 ans

Salut

Cette ligne ne fait rien du tout: document.getElementById('list_profil').innerHTML;
Manque un = 'blabla' afin de mettre a jour son contenu.

AaFrederic Husson, il y a 8 ans

ça m'arrange pas lol, l'objectif est le suivant:

je selectionne un utilisateur, j'ouvre un tchat avec lui et quand le message est posté je voudrais mettre à jour la liste des utilisateurs avec qui il est en contacte

les données proviennent de mysql

G1.3, il y a 8 ans

Faudrait refaire un call ajax vers liste_profil.php au niveau de la ligne précisée dans mon premier message.
Ce php te retourne un HTML (comme actuellement je pense), et juste à mettre ce HTML dans le block list_profil.

Exactement comme tu as fais pour mettre à jour les messages :)

AaFrederic Husson, il y a 8 ans

je pensais qu'il etait possible de mettre à jour deux div en même temps
j'ai donc ajouter une seconde requete ajax dans la 1ere et ça fonctionne à merveille

il me reste juste un petit soucis:

quand je demarre une nouvelle converstion avec un nouveau contact ma div se met bien a jour au submit
mais cette liste remonte vers le haut je voulais donc appliquer une nouvelle position mais ça fonctionne pas

voici mon css:

.chat_profils_homme { position: relative; top: -30px; left: -20px; font-size: 12px; }

ma requete ajax:

$.ajax({ url: '/fiche_cli/liste_profil.php', method: 'GET', dataType: 'html', data: $form.serialize() }).then(function (data) { $("#list_profil").html(data); $('.chat_profils_homme').position({ top : '30px' }); }).catch(function (error) { console.log(error); });

c'est dans cette partie que je souhaite modifier la position apres le post car les profils remontent et je ne vois plus le 1er profil de la liste:

while($data2 = mysql_fetch_array($req2)) { $sql3 = mysql_query("SELECT sexe FROM membres WHERE pseudo='".$data2['dest']."'") or die (mysql_error()); list($sexe) = mysql_fetch_row($sql3); if ($data2['dest']!=$_GET['dest']) { if ($sexe == 'Homme') { echo '<A style="margin-bottom: -15px; color: #007ba2;" class="chat_profils_homme" href="chat.php?exp='.$_SESSION['pseudo'].'&dest='.$data2['dest'].'">'.$data2['dest'].'</a>'; } else { echo '<A style="margin-bottom: -15px; color: #f40e63;" class="chat_profils_homme" href="chat.php?exp='.$_SESSION['pseudo'].'&dest='.$data2['dest'].'">'.$data2['dest'].'</a>'; } } }