2010-06-16 6 views
0

Ce que je voudrais faire est de récupérer le contenu d'un fichier PHP et l'insérer dans un div toutes les 60 secondes, rafraîchissant fondamentalement la div dynamique. J'ai trouvé le code suivant jusqu'à présent, mais il ne semble pas fonctionner. Le code est juste comme ça, rien de plus, mis à part le login MYSQL.Ajax Div Récupération toutes les 60 secondes

PHP à saisir:

<?php     
$time = date("m/d/Y h:i:s a", time()); 
       mysql_query("UPDATE djs SET requesttime='{$time}' WHERE username='{$djs['username']}'") 
       or die(mysql_error()); 

       $request_db = mysql_query("SELECT * FROM requests 
       WHERE haveplayed='0'") or die(mysql_error()); 
       echo "<table style=\"border:1px solid;width:99%;margin-left:auto;margin-right:auto;\" border=\"1\">"; 
       echo "<tr><th>Title</th><th>Artist</th><th>Dedicated To...</th></tr>"; 
       while($request = mysql_fetch_array($request_db)) { 
        echo "<tr><td style=\"width:33%;padding:1px;\">"; 
        echo $request['SongName']; 
        echo "</td><td style=\"width:33%;\">"; 
        echo $request['Artist'];  
        echo "</td><td style=\"width:33%;\">"; 
        echo $request['DedicatedTo']; 
        echo "</td></tr>"; 
       } 
       echo "</table>"; 
      ?> 

Le code PHP original est exactement la même, enfermé dans un div avec un attribut id 'ajax_table'.

Le JavaScript est:

// JavaScript Document 
var xmlHttp_moniter 

function moniter() 
{ 
    xmlHttp_moniter = GetXmlHttpObject_parcel() 
if(xmlHttp_moniter == null) 
{ 
    alert("browser does not support HTTP Request") 
    return 
} 
var url="ajax_table.php?random=" + Math.random() 
xmlHttp_moniter.onreadystatechange = stateChanged 
xmlHttp_moniter.open("GET",url,true) 
xmlHttp_moniter.send(null) 

} 

function stateChanged() 
{ 
if(xmlHttp_moniter.readyState==4 || xmlHttp_moniter.readyState == "complete") 
{ 
    document.getElementById("ajax_table").innerHTML = xmlHttp_moniter.responseText 
    setTimeout('ajax_table()',60000); 
} 
} 

function GetXmlHttpObject_parcel() 
{ 
var xmlHttp_moniter=null; 
try 
{ 
    xmlHttp_moniter=new XMLHttpRequest(); 
} 
catch (e) 
    { 
     //Internet Explorer 
     try 
      { 
       xmlHttp_moniter=new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
     catch (e) 
      { 
      xmlHttp_moniter=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
    } 
return xmlHttp_moniter; 
} 

et qui se trouve sur la page qui demande l'autre page php.

Répondre

2

Que diriez-vous à l'aide d'un framework comme jQuery pour simplifier votre javascript:

$(function() { 

    setInterval(function() { 
    $.get('ajax_table.php', function(data) { 
     $('#ajax_table').html(data); 
    }); 
    }, 60 * 1000); 

}); 
+0

Merci :). Cela a fonctionné. – Sam

0

Au début, il n'y a pas ajax_table() fonction js appelé

setTimeout('ajax_table()',60000); 

dans votre code. Au deuxième point, êtes-vous sûr d'appeler la fonction moniter() quelque part pour la première fois?

+0

Merci ! La première fois que j'ai changé moniter en ajax_table, que dois-je faire d'autre? – Sam

+0

Ça ne marche toujours pas? Le code est incomplet, donc je ne peux que deviner. 1) Vous devez ajouter le premier temporisateur après le chargement de la page afin que la première requête soit exécutée (laid et simple: