2010-07-24 5 views
1
<html> 
<head> 
<style type="text/css"> 
    body { 
     background-color: #000000; 
     font-family: Arial, Helvetica, sans-serif; 
     font-size: 20px; 
     text-align: center; 
     color: #FFFFFF; 
    } 
</style> 
<script type="text/javascript" src="jquery-1.4.js"></script> 
<script type="text/javascript"> 
function sleep(ms) 
{ 
    var dt = new Date(); 
    dt.setTime(dt.getTime() + ms); 
    while (new Date().getTime() < dt.getTime()); 
} 
function update() { 
    while (0 < 1) {<?php $contents = file_get_contents("my url here"); 
    ?> 
     var count = <?php echo $contents ?>; 
     document.getElementById('div').innerHTML = count; 
     sleep(1500); 
    } 
} 
</script> 
</head> 
<body onload=update()> 
<iframe id="iframe" src="my url" style="visibility: hidden;"/> 
<table width=100% height=100%> 
<tr height=80%> 
<td width=100%> 
<center> 
<div id="div"></div> 
</center> 
</td> 
</tr> 
</table> 
</body> 
</html> 

Lors de l'affichage du code source dans le navigateur, le var est défini correctement, mais il ne définit pas le contenu du div. Je suis certain que l'url vers laquelle pointe le script PHP est exacte et contient seulement un script pour grep un nombre d'une page externe.Pourquoi mon script ne met-il pas à jour mon div dynamiquement comme il est censé le faire?

Merci d'avance!

+3

Pourriez-vous poster la page comme elle est exécutée sans le PHP s'il vous plaît? (IE, il suffit de charger la page, afficher la source, puis copier cela). De plus, vos éléments HTML sont à mon avis mal nommés, les appeler 'div' et 'iframe' sont ambigus et déroutants. –

+1

Au lieu d'une boucle/sommeil infinie, vous devez utiliser setInterval() –

+1

btw .. n'utilisez jamais de boucles pour simuler le sommeil .. le système fait tout le contraire de dormir dans ce cas ... –

Répondre

1

En supposant que la valeur de file_get_contents("my url here") donne 42 (par exemple), vous savez que vous créez une boucle infinie qui définira le contenu de #div-42 encore et encore toutes les 1,5 secondes? I.e., var count sera toujours, constamment être 42 et ne changera pas, puisque PHP est évalué seulement une fois sur le serveur.

En outre, je soupçonne que votre sleep fonction pourrait poser un peu un problème, car il crée une autre boucle serrée. Je ne serais pas surpris si ce script bloque simplement le navigateur sans jamais mettre à jour quoi que ce soit puisqu'il est pris dans une boucle infinie. Le moyen de retarder l'exécution en Javascript est d'utiliser window.setTimeout ou window.setInterval.

Je suppose que ce que vous cherchez est une solution AJAX quelconque, si vous voulez nous dire ce que vous voulez faire. Puisque vous incluez jQuery (sans l'utiliser réellement), vous devriez regarder jQuery.get(), couplé avec un setInterval pour mettre à jour le div périodiquement.

Quelque chose comme:

window.setInterval(function() { 
    $.get("my url here", function (data) { 
     $('#div').html(data); 
    }); 
}, 1500); 
+0

Ouais, je voulais utiliser jQuery mais jamais fait ... Je vais essayer ça. Merci! – esqew

+0

MERCI !! Ça a marché. :) – esqew

0
var count = <?php echo $contents ?>; 
document.getElementById('div').innerHTML = count; 

Vous demandez au serveur Web pour la variable contenu $ par php, qui sera toujours un nombre statique à moins de recharger la page. Essayez d'utiliser jQuery, comme l'affiche ci-dessus mentionné.

2

Pour répondre à la question, pourquoi pas en cours d'exécution ... votre onload a besoin de devis:

<body onload="update()"> 

mais les autres ont affiché de meilleures façons de s'y prendre à l'aide jquery.

Questions connexes