Actualisation automatique

Fermé
error - 6 oct. 2014 à 12:52
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 - 10 oct. 2014 à 21:21
Bonjour,


j'essaie en AJAX de raffraichir une div, lorsqu'un nouveau commentaire est posté.
J'ai récupéré les données du commentaire comme ceci :
<script type="text/javascript">
$(function(){
$("#formcom").submit(function(){
var title = $(this).find("input[name=title]").val();
var content = $(this).find("textarea[name=content]").val();
$.post("ajax.php",{title:title,content:content},function(data){
alert(data);
});
return false;
});
});
</script>
Donc le alert data me renvoi bien les info que j'ai envoyé, mais je ne vois pas du tout comment actualiser une fois que c est rentré en bdd, comment dire si nouvelle insertion tu actualises...
J'ai vraiment du mal à comprendre comment faire si vous pouvez m'aider...

9 réponses

Salut,

Pour rediriger en JS il y à la méthode suivante :

window.location.reload()

Normalement avec cette méthode tu devrais pouvoir faire ce que tu souhaites ;)
0
merci mais alors ce n est pas de l ajax si? je dois absolument le faire en ajax^^
0
L'AJAX n'est pas un langage, mais une manière différente/détourné de l'utilisation du JS.

La fonction que je t'ai donné est écrite en JS, mais cela ne l'empêche en aucun cas de fonctionner dans du code prévu pour du traitement côté serveur.

Dans l'ordre :
- Tu postes un nouveau message/commentaire et ton script envoie les infos pour qu'ils soit stocké dans ta BDD (Passage d'info côté client=> côté serveur)
- Ton script php te dis que tu reçois un nouveau message (côté serveur => côté client)
- Ton p'tit morceau de JS qui actualise ta page te permet donc de recevoir ton message ;)

Un p'tit lien vers l'explication : comment fonctionne l'ajax : http://fr.wikipedia.org/wiki/Ajax_(informatique)
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
10 oct. 2014 à 21:21
C'est pas du push !
Ton script php te dis que tu reçois un nouveau message (côté serveur => côté client) 


C'est l'inverse: client => Serveur
0
Merci je pense voir un peu mieux comment fonctionne l ajax mais j'ai quand meme beaucoup de mal ...
<script type='text/JavaScript'>
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest)
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
// appel lors du clic
function go(){
var xhr = getXhr()
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
alert(xhr.responseText);
}
}
xhr.open("GET","ajax.php",true);
xhr.send(null);
}
</script>

Si j'ai bien compris la première fonction getXhr sert à instancier, et la seconde fonction go devrait faire appeler ajax.php lors du clic non ? Pourtant il ne se passe rien... j'ai loupé quelque chose ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fail c'est normal que çe ne marche je n'avais pas onclick la fonction... Donc dans mon ajax.php j'ai un echo"bonjour", et quand je clique sur la formulaire ca m'affiche alors ce message.
Je vois un peu mieux le principe, mais je ne vois pas comment faire pour recharger toutes les pages.
Je vais mettre windows.location.reload() dans ajax.php ? Met ca va me recharge que la page ou il y a eu le clic, pas toutes celles ouvertes ailleurs ?
0
J'ai personnellement eu le même souci y'a pas longtemps, je sais rafraîchir toutes les pages d'un site si une news est posté mais de manière un peu "crade" et pas jolie jolie.

J't'explique un peu le raisonnement à toi de voir après si tu veux l'utiliser ou non :
- Tu fais un p'tit script JS qui est sur la page et qui regarde un certain fichier, si la valeur du fichier change alors : windows.location.reload();

- Sinon rien

C'est pas beau, c'est moche, c'est même dégueulasse mais sa fonctionne.
Après essaye de voir si y'a pas mieux, mais sinon tu peux reprendre le raisonnement suivant !
0
j'ai tellement de trucs a faire la propreté du code ne me dérange pas x) je verrais ça une fois que tout sera fini, la j'aimerais juste que ça fonctionne et comprendre commet ça fonctionne.

Tu peux me montrer comment ça fonctionne ? j'ai du mal à voir le fonctionnement.
Donc la fonction que j'ai mis plus haut ce n'est pas du tout le bon type de fonctionnement ?
0
$(document).ready(function(){ // A mettre quelque part sur ta page ou se trouvent les commentaires
function refresh() {
$.ajax({
url: "tonScriptPhp.php",
cache: false
})
.done(function (varCheck) {
if(varCheck=== "newPost")
windows.location.reload();
});

if((new Date().getTime() - time >= 180000)) {
setTimeout(refresh, 3000); // Timer du refresh, ici toutes les 3 secondes
}
setTimeout(refresh, 3000);
});

C'pour l'ajax, ensuite dans ton script php :


<?php
$fichierCheck = fopen('fichierCheck.txt', 'r+');
fseek($fichierCheck , "newPost");
$varCheck = fgets($fichierCheck);
echo $varCheck; // en gros tu return varCheck qui est en php pour que ton JS puisse le prendre
fseek($fichierCheck, "newPost"); // Puis tu réécris le message "normal" dans ton fichier pour pas qu'il te boucle en chaîne
fputs($fichierCheck, "oldPost");
fclose($fichierCheck);
?>


Mais pour que ça fonctionne faut que tu écrives quelque chose dans le fichier à chaque post de commentaire et que tu le changes après ta lecture, sinon tu seras redirigé en boucle.

Normalement si tu adapte bien ton code avec celui que je viens de te passer y'a pas trop de soucis.
0
ok je vois parfait merci beaucoup pour ton aide !
0