De l'ajax, mais intelligent comme celui de facebook

ndcreatif Messages postés 2 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 4 juin 2011 - 4 juin 2011 à 13:15
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 22 juin 2011 à 12:17
Bonjour j'utilisais un code ajax comme celui ci à peu pres pour mettre tout en live comme ceci

<script type="text/javascript">
function check_message(arg) {
// var xhr_object = null;
// xhr_object = new XMLHttpRequest();

// xhr_object.open("GET", "affiche_message.php?dialogue_avec="+arg, true);

// xhr_object.onreadystatechange = function() {
// if(xhr_object.readyState == 4) {
// if (xhr_object.responseText==0)
// document.getElementById('messages').innerHTML =xhr_object.responseText;
// else
// document.getElementById('messages').innerHTML =xhr_object.responseText ;
// setInterval("check_message("+arg+")",1000);

// }
// }

// xhr_object.send(null);
// }



</script>
<script type="text/javascript">
function check_message(arg) {


$.post("affiche_message.php",{id: <?php echo $_SESSION['id']; ?>, id2: arg},function(data) {

if(data=="Vous êtes inscrit , vous pouvez vous connecter via la barre ci-dessus ! =)") {

$("#inscription").hide();

} else {
$("#messages").empty().append(data);
setInterval("check_message("+arg+")",1000);


}




}); }





</script>

Un avec jquery, et un autre sans

Le problème est le suivant: sa bouffe trop de connexion regardez
http://ndcreatif.com/probleme_ajax.JPG

Comment faire comme facebook, c'est à dire, regarder en ajax une certaine partie de page QUAND IL Y EN A BESOIN ?

Merci de m'aider :)

4 réponses

ndcreatif Messages postés 2 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 4 juin 2011
4 juin 2011 à 13:28
<script type="text/javascript">
function check_message(arg) {
// var xhr_object = null;
// xhr_object = new XMLHttpRequest();

// xhr_object.open("GET", "affiche_message.php?dialogue_avec="+arg, true);

// xhr_object.onreadystatechange = function() {
// if(xhr_object.readyState == 4) {
// if (xhr_object.responseText==0)
// document.getElementById('messages').innerHTML =xhr_object.responseText;
// else
// document.getElementById('messages').innerHTML =xhr_object.responseText ;
// setInterval("check_message("+arg+")",1000);

// }
// }

// xhr_object.send(null);
// }



</script>
<script type="text/javascript">
function check_message(arg) {


$.post("affiche_message.php",{id: <?php echo $_SESSION['id']; ?>, id2: arg},function(data) {

if(data=="Vous êtes inscrit , vous pouvez vous connecter via la barre ci-dessus ! =)") {

$("#inscription").hide();

} else {
$("#messages").empty().append(data);
setInterval("check_message("+arg+")",1000);


}




}); }





</script> 


Dsl pour le double post c'est mon premier post, voilà pour afficher le code entre les balises
0
smathis Messages postés 153 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 17 juin 2011 5
6 juin 2011 à 09:45
Avec HTML 5 il y a un nouveau système pour éviter ça, les WebSockets je crois.
Mais sinon à ma connaissance il n'y a rien d'autre à faire. d'ailleurs je crois que Facebook fait aussi plusieurs appels AJAX non ?
0
marwen109 Messages postés 63 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 26 mars 2012
12 juin 2011 à 17:26
@smathis
vous avez tout à fait raison,
les WebSockets existe en html5 mais pratiquement n'est pas utilisable (pour le moment)c'est une technologie trop jeune....
0
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 1
22 juin 2011 à 12:17
Le problème, c'est que tu renvois tout le temps du code. Aussi si les messages sont déjà affichés du côté client. Tu dois demandé par ajax seulement pour les nouveaux messages à ajoutant en paramètre L'id du dernier message reçu. Et dans ce cas, tu ne fais pas $("#messages").empty().append(data); mais juste $("#messages").append(data); . Tu peux aussi gagner des octets en utilisant JSON. Bon courrage ;-)

Have Fun ...
0
Rejoignez-nous