2017-02-06 1 views
-1

j'ai 3 fichiers je les appellent:Javascript inclure fichier et rafraîchir toutes les 30 secondes

 $nowplaying = file_get_contents("/api/static/nowplaying"); 
$dj = file_get_contents("/api/static/dj"); 
$listeners = file_get_contents("/api/static/listeners"); 

Je veux les appeler dans mon fichier php dans les balises div en utilisant

'.$dj.' 
'.$nowplaying.' 
'.$listeners.' 

mais le contenu des fichiers que je suis en train de mettre à jour toutes les 30 secondes, donc j'ai besoin de rafraîchir les données affichées sans actualiser la page. Je pense que javery jquery peut être le seul mais je ne suis pas trop familier avec ça.

Merci beaucoup!

+0

Familiarisez-vous avec [ 'setInterval()'] (https://www.sitepoint.com/setinterval-example/) –

+0

Cela peut être fait par ajax. Vous pouvez utiliser jquery à coup sûr - matériel à étudier ici: http://api.jquery.com/?s=ajax –

Répondre

0

Si vous avez jQuery

setInterval(function(){ 
    $.get("/api/static/nowplaying",function(data){ 
     // Do something with data 
    }); 
},30000); 

avec javascript un peu comme

var request = new XMLHttpRequest(); 
setInterval(function(){ 
    request.open('GET', '/api/static/nowplaying', true); 
    request.send(); 
},30000) 

request.onload = function() { 
    if (request.status >= 200 && request.status < 400) { 
     // Success! 
     var data = request.responseText; 
    } else { 
    // We reached our target server, but it returned an error 

    } 
}; 
0

Oui, je pense que l'aide jquery/JavaScript est ce que vous cherchez et son assez simple. Utilisez simplement la méthode setInterval() en JavaScript pour l'exécuter à plusieurs reprises sur une planification. Puisque vous êtes plutôt nouveau à cela, je vais essayer de faire un exemple simple. Le code ci-dessous s'exécute updateDiv() toutes les 30 secondes.

<script type="text/javascript" src="//code.jquery.com/jquery-3.1.1.js"> 
</script> 
    <script type='text/javascript'> 

var myVar 
function updateDiv(){ 
    clearInterval(myVar); 

    alert('your code should go here'); 

    myVar = setInterval("updateDiv()", 30000); 
} 
$(document).ready(function(){ 
    myVar = setInterval("updateDiv()", 30000); 
}); 

Vous pouvez voir ce ici: https://jsfiddle.net/jglazer63/h6q20dj9/1/

+0

Si vous allez effacer et définir l'intervalle de chaque appel, il vaudrait mieux simplement utiliser 'setTimeout 'qui ne tire qu'une fois. Ce qui signifie que vous n'avez pas besoin d'effacer, il suffit de définir un autre délai à la fin. En outre, tout cela ne devrait être fait que si vous ne pouviez pas terminer le traitement avant que l'intervalle suivant ne se déclenche. Si vous avez un traitement qui prend plus de 30 secondes (le montant de l'intervalle), alors je suggère de le refactoriser d'une certaine manière. –

+0

Ouais encore aux prises avec elle .. Essayé tout ce qui précède à l'intérieur

et toujours rien! :( –

+0

Ceci est javascript.Il devrait aller entre les balises en haut de la page et devrait avoir un avant et après cela.J'ai fais cela? Je vais l'ajouter pour plus de clarté .... –