POST à ​​PHP en utilisant AJAX et rafraîchir lors du changement

J'essaie de créer une application Web qui doit rafraîchir la page entière en cas de modification de la base de données. J'aimerais y parvenir en utilisant AJAX et PHP. Je voudrais POSTER une seule information du script PHP toutes les 5 secondes et si la valeur retournée à partir du script PHP est différente d'une variable prédéfinie, j'aimerais actualiser la page entière.

Par exemple, j'ai une valeur prédéfinie en javascript de 200. Si le script PHP renvoie une valeur différente, j'aimerais actualiser la page entière.

Je sais comment écrire le PHP, c'est juste le XJAX avec lequel j'ai des problèmes. Je ne voudrais pas non plus utiliser jquery si possible.

Merci d'avance pour toute orientation!

EDIT: Je ne voudrais pas utiliser jquery ou tout autre cadre, juste javascript brut. J'ai également besoin de rafraîchir la page entière lors de la modification et d'exécuter l'AJAX toutes les 5 secondes.

Bonne question. Vous pouvez le faire if(xmlhttp.responseText !== "<?php echo $currentValue; ?>") { Pour vérifier si la valeur du côté PHP a changé. Cette méthode de watchdog est appelée très 5 secondes à travers setInterval . S'il y a un changement, la page est actualisée via document.location.reload(true) ( ref ) pour empêcher la réutilisation du cache.

 function watchdog() { var xmlhttp; if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 - whatever, it doesn't hurt xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { // This is how you can discover a server-side change if(xmlhttp.responseText !== "<?php echo $currentValue; ?>") { document.location.reload(true); // Don't reuse cache } } }; xmlhttp.open("POST","page.php",true); xmlhttp.send(); } // Call watchdog() every 5 seconds setInterval(function(){ watchdog(); }, 5000); 

Remarque: J'ai choisi setInterval sur setTimeout car si la connexion au serveur échoue (500 erreurs, timeout, etc.), la logique de réponse peut autrement ne pas déclencher un autre setTimeout . setInterval garantit que le serveur est interrogé de manière cohérente indépendamment des pannes de connexion.

Votre AJAX peut être exécuté toutes les 5 secondes à l'aide de la fonction setInterval (). Et vous pouvez appeler pour actualiser la page à partir du rappel d'une demande de demande AJAX.

Veuillez essayer ci-dessous le code. J'ai utilisé la fonction javascript setInterval qui fera appel ajax toutes les 5 secondes. Maintenant, faites des efforts pour apporter des modifications au code selon vos besoins et le poursuivre.

 <script type="text/javascript" > var predefined_val = 'test';// your predefined value. $.document(ready(function(){ setInterval(function(){ $.ajax({ type:"POST", url:"test/test_script.php", //put relative url here, script which will return php data:{}, // if any you would like to post any data success:function(response){ var data = response; // response data from your php script if(predefined_val !== data){ // action you want to perform on value changes. } } }); },5000);// function will run every 5 seconds })); </script>