De l'ajax, mais intelligent comme celui de facebook

Signaler
Messages postés
2
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
4 juin 2011
-
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
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

Messages postés
2
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
4 juin 2011

<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
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
1
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 ?
Messages postés
63
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
26 mars 2012

@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....
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

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 ...