2012-05-12 3 views
0

Le script php parse fichier xml et la sortie d'impression à la page à l'intérieur div:Rafraîchissant la sortie php sans realoading la page

<?php 
$playlistUrl = 'http://url/to/playlist.xml'; 
$xmldata = file_get_contents($playlistUrl); 

$xml = new SimpleXMLElement($xmldata); 

foreach($xml->trackList->track as $track) { 
    echo $track->title .' - '. $track->annotation .'<br>'; 
} 
?> 

Je veux mettre à jour la sortie tous les 25sec sans recharger la page, en utilisant une méthode AJAX. Je trouve quelques exemples de code qui définissent l'intervalle de temps:

// Poll the server each 60 seconds 
window.setInterval(function() 
}, 60000); 

également

setInterval(function(){ 
SomeAjaxFunction(); 
}, 1000); 

Comment mettre en œuvre cette correctement dans mon cas?

Répondre

5

consultez ma réponse ici.

Refresh page element after specific time

j'ai répondu sur la façon de recharger la div après le temps spécifique, vous pouvez ruser un peu pour garder rechargeant après un intervalle de temps.

les bases sont les suivantes.

<div id="reload"> 
//your PHP code and content are here. 
</div> 

et votre code jQuery.

<script> 
setInterval(function() { 
    $('#reload').fadeOut("slow").load('reponse.php').fadeIn("slow"); 
}, 10000); 
</script> 
+0

cela fonctionne, merci. SetInterval est une fonction JavaScript standard qui ne fait pas partie de jQuery? – fxgreen

+0

@fxgreen peu importe si c'est une partie de jQuery ou non, coz jQuery lui-même est javascript. il est donc tout à fait acceptable d'utiliser javascript natif dans jQuery. BTW si cela vous a aidé alors vous pouvez marquer cela comme étant répondu. –

+0

juste pour effacer: où le script devrait aller, dans la tête ou dans le corps? Il y a également un délai de ~ 10sec après le rechargement de la page avant que la sortie n'apparaisse. – fxgreen

1

setTimeout exécute la fonction après X secondes ... alors si vous le faites récursives, vous aurez toujours secondes X à attendre après le code a été exécuté. Ceci est préférable à setInterval qui s'exécute exactement toutes les X secondes.

Pensez à quand le serveur est en retard et la charge() prend quelques secondes pour charger ... en fait bien maintenant l'animation est la moitié a expiré et fait recharger/disparaître à nouveau ....

function loopy_function() { 
    // ajax call 
    // on success 
    setTimeout(loopy_function, 1000 * 10); 

} 

La clé ici est d'appeler seulement votre setTimeout sur une réponse complète.

Questions connexes