jQuery actualiser si le “vrai” du fichier PHP

Je veux que ma page vérifie si un fichier PHP renvoie «true» toutes les quelques secondes et actualise un certain div si le fichier PHP a renvoyé «true». Actuellement, j’ai ceci, qui ne fonctionne pas et est destiné à la page complète au lieu de la div (je voudrais que la div actualise uniquement à la place de la page complète):

 $(document).ready(function(){ setInterval("checkTime()", 10000); function checkTime(){ $.ajax({ url: 'checktime.php', success: function(refresh){ if(refresh == "true"){ location.reload(true); } } }); } });  

MODIFIER:

En suivant les instructions données ici, j’ai placé le code suivant dans mon en-tête:

  $(document).ready(function(){ function checkTime(){ $.ajax({ dataType: 'json', url: 'checktime.php', success: function(data){ if(data.refresh == "true"){ $('#tv').load('tv.php'); } } }); } setInterval(function() {checkTime()}, 10000); }); 

Mon div TV ressemble à ceci:

 

Lorsque j’accède manuellement à checktime.php et que j’actualise mon index, tv div est mis à jour correctement au moment voulu. Cependant, rien ne semble se passer du javascript dans l’en-tête.

Vous aurez besoin d’une URL pour envoyer le code HTML div lorsqu’il aura besoin d’actualiser. La suite suivra le contenu de cette URL dans le div que vous spécifiez. J’ai ajouté un ajustement au texte d’actualisation au cas où le serveur enverrait des espaces superflus ou des sauts de ligne.

Utilise la méthode de raccourci jQuery AJAX load ()

http://api.jquery.com/load/

 $(document).ready(function(){ setInterval("checkTime()", 10000); function checkTime(){ $.ajax({ url: 'checktime.php', success: function(refresh){ if($.sortingm(refresh) == "true"){ $('#myDivID').load(refreshDivUrl) } } }); } }); 

EDIT: il existe en fait une logique plus simple pour cela. Renvoyer “false” sans actualisation, sinon, renvoyer le code HTML et enregistrer un appel supplémentaire pour obtenir le nouveau code HTML.

 $(document).ready(function(){ setInterval("checkTime()", 10000); function checkTime(){ $.ajax({ url: 'checktime.php', success: function(refresh){ if($.sortingm(refresh) != "false"){ $('#myDivID').html(refresh) } } }); } }); 

Nous aurions besoin de comprendre exactement ce que checktime.php renvoie. Je suggère de renvoyer les données au format JSON, de sorte qu’à l’avenir, si vous souhaitez avoir d’autres informations (par exemple … l’heure! …), elles sont extensibles.

Pour le deuxième point, vous pouvez utiliser la fonction .load() de jQuery pour simplement charger du contenu dans un div particulier.

Si vous suivez la route JSON et que votre JSON a un membre appelé “refresh” qui peut être “true” ou “false” (remarquez que j’utilise une chaîne ici plutôt qu’un booléen), votre fonction révisée pourrait ressembler à ceci:

 $(document).ready(function(){ function checkTime(){ $.ajax({ dataType: 'json', url: 'checktime.php', success: function(data){ if(data.refresh == "true"){ $('#myDiv').load('myresource.php'); } } }); } setInterval(function() {checkTime()}, 10000); }); 

En guise de suggestion: si le contenu de cette div mise à jour n’est pas énorme et n’est pas interactif, pourquoi ne pas simplement le mettre à jour en permanence et supprimer la condition? Cela simplifierait grandement le processus.

[update] Vous utilisez également une fonction de chaîne dans setInterval, qui utilise eval. Ceci est considéré comme un non-non, et vous devriez passer à une fonction réelle:

 setInterval(function() {checkTime()}, 10000); 

J’ai mis à jour mon exemple de code en conséquence!

Je n’ai aucune idée de ce que cela signifie d’actualiser une div, mais vous pouvez masquer la div puis l’afficher en fondu:

 $('#divId').hide().fadeIn('slow'); 

La partie qui vous cause le problème est location.reload(true) . La page est en train de recharger parce que vous lui dites de recharger.

Mais il est assez simple de modifier les données d’un

afin de ne pas vous causer beaucoup de problèmes.

Pour modifier les données d’une div, vous devez remplacer location.reload(true) par $("#target-div").html("New data");