2016-06-28 1 views
0

Je souhaite recevoir un commentaire mis à jour depuis la liste de discussion sans actualiser la page, c'est-à-dire que j'appelle ajax pour la liste secondes pour vérifier si nouveau chat est inséré ou non à la base de données,Définir un appel ajax uniquement lorsque le nouvel enregistrement est inséré dans la base de données

$(document).ready(function(){ 
    setInterval(function(){ 
     $.ajax({ 
      type:'POST', 
      url: baseUrl+"chat", 
      cache: false, 
      data: dataString, 
      crossDomain: true, 
      success: function(data){ 
       var getData = JSON.parse(data); 
       if(getData.status == "success") 
       { 
        for(i=0;i<getData.chat.length) 
        { 
         $("chatList").text(""); 
         $("chatList").append("<span class='black'>"+getData["chat"][i].name+" : <span class='blue'>"+getData["chat"][i].comment+"</span>"); 
        } 
       } 
       else 
       { 
        alert(getData.message); 
       } 
      } 
     }); 
    },5000); 
}); 

Je souhaite savoir s'il y a un moyen facile de faire ceci ou de PHP MySQL, il est possible d'envoyer la page une nouvelle notification inséré commentaire ?

+0

terminer la boucle, vérifier: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration – C2486

+0

Utiliser la notification push ou cometD https://cometd.org/ comme quelque chose –

Répondre

1

Vous pouvez utiliser un socket web, socket.io par exemple. Cela vous permettra d'envoyer des notifications du serveur au client. Ainsi, lorsque vous recevez des données de votre chat (cient) dans votre API (serveur), après la mise à jour de la base de données, vous devez envoyer une «notification» à votre client.

Lorsque votre client à obtenir la notification, vous pouvez faire appel AJAX:

socket.on('notification', function(){ 
    doYourAJAXStuff(); 
}); 
+0

Est-ce la même chose pour le javascript mobile? comme pour les applications hybrides (PhoneGap)? –

+0

Oui, c'est une bibliothèque (une partie pour le back-end, l'autre pour le front). Donc, si vous utilisez PhoneGap, vous utilisez JS et vous pouvez utiliser des websockets. Mais vous êtes avec PHP (back-end), donc vous devrez utiliser elephant.io –

+0

Oh, merci mon pote pour cette information, j'accepte ceci comme une meilleure réponse à mes besoins. Merci encore. –

2

La meilleure pratique consiste à utiliser HTML5 WEB WORKERS.

HTML5 Web Workers

Le problème avec JavaScript du navigateur est qu'il fonctionne sur un seul thread. En d'autres termes, deux scripts ou processus ne peuvent pas s'exécuter simultanément. Si vous traitez JavaScript après le chargement de la page, l'utilisateur final ne peut pas interagir dynamiquement avec la page. Le JavaScript ne gère pas les événements de l'interface utilisateur lors du traitement d'autre chose. Si vous traitez quelque chose de grand avant le chargement de la page, l'utilisateur final doit attendre tous ensemble, ce qui est une expérience utilisateur horrible.

1

Vous pouvez utiliser socket.io api pour obtenir des informations en temps réel au client ..