2010-11-12 2 views
1

J'ai presque fini de coder un site Web que j'avais commencé il y a quelques mois. J'ai fait la fondation mais, je veux ajouter quelques nouvelles fonctionnalités pour le rendre plus rapide et ajouter un peu de bling à cela.Vérifiez la boîte de réception des messages dynamiquement avec ajax?

Actuellement, j'ai un système par lequel PHP interroge la base de données pour voir s'il y a des messages non lus chaque fois que la page une nouvelle demande de page est faite. si un utilisateur a un message non lu, php renvoie le nombre de messages non lus dans une citation.

Comment utiliser ajax ou jquery pour renvoyer le nombre de messages non lus sans avoir à faire une nouvelle demande de page?

grâce

+1

Apprenez à accepter les réponses et à les augmenter. Les gens donnent de leur temps ici pour aider les autres et ils veulent se sentir appréciés et c'est comme ça que nous le montrons au débordement/échange de pile. – webbiedave

Répondre

0

Créer un script qui fait écho seul le nombre de messages non lus (sans aucun autre HTML), puis utiliser jQuery pour l'obtenir:

$('#span_with_numer_of_messages').load('your_unread_messages_script.php'); 
3

vous pouvez définir une demande chronométrée, comme celui-ci :

var element = $('...'); 

// new get request every minute - 60*1000ms 
var interval = setInterval(function(){ 
    element.load('/phpfile.php'); 
}, 60000); 
2

Dans votre /phpfile.php résultats et tableau de encode au format JSON. Par exemple, vous pouvez avoir requête

<?php 
    include 'config.php'; 
    include 'opendb.php';   
    $query = "SELECT message FROM messages"; 
    $result = mysql_query($query); 
    $jarray = array(); 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     $jarray[] = array("message"=>$row['message']);   
    } 
    echo json_encode($jarray);   
    include 'closedb.php'; 
?> 

Get tableau JSON avec ajax.

var messagesContainer = $('messages'); 
    $.getJSON('phpfile.php',function(data) 
    { 
     $.each(data, function(i,stuff){ 
      $("<div class='msg'>"+stuff.message+"</div>").prependTo(messagesContainer); 
     } 

    }) 
Questions connexes