2012-07-03 3 views
0

Lors de la mise à jour du contenu d'un fichier texte, celui-ci n'est pas mis à jour. Au lieu de cela, je dois supprimer tout cache et autres joyeusetés dans mon Google Chrome pour le faire actualiser. Cependant, cela fonctionne quand vous utilisez un serveur Apache (hôte local).Obtention des dernières données à partir d'un fichier texte

J'ai essayé d'ajouter un: <meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT"/> <meta http-equiv="pragma" content="no-cache" />, mais le problème persiste.

function MakeRequest() 
{ 
    var xmlHttp = getXMLHttp(); // just a basic XML request 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse(xmlHttp.responseText); 
    } 
    } 
    xmlHttp.open("GET", "counter.txt", true); 
    xmlHttp.send(null); 
} 

Et j'ai l'impression que cette autre JavaScript dans un div: (chronométré à courir avec un certain retard)

document.getElementById('counterHolder').innerHTML = response; 

Click here if you need to see the webpage live.

+0

Avez-vous vérifié votre console javascript? Je continue d'obtenir 'le nombre n'est pas défini'; que fais-tu avec la variable 'nombre'? – Daedalus

+0

Vérifié maintenant - c'était une petite pièce de code que je n'utilisais plus. – user1431627

+0

Alors pourquoi est-il toujours là? J'ai remarqué que parfois, s'il y a une erreur dans une fonction, elle arrête complètement d'exécuter la fonction; s'il n'est plus utilisé, pouvez-vous le retirer s'il vous plaît? – Daedalus

Répondre

2

Cela semble être un problème de mise en cache. Je ne peux pas décrire exactement pourquoi cela se passe comme cela, mais dans mon expérience, l'ajout d'une chaîne de caractères aléatoires à la fin de votre URL dans votre demande get devrait fonctionner. Je voudrais suggérer quelque chose comme ci-dessous:

xmlHttp.open("GET", "counter.txt?" + Math.random(), true); 
+0

+1, mais je pense qu'un horodatage est meilleur. – lbstr

+0

Merci. Cela fonctionne parfaitement. Réponse acceptée – user1431627

1

Je crois que quelque chose de similaire à ce poste pourrait vous aider. Son visant à relier à un fichier serait considéré comme un nouveau lien à chaque fois que la page est rechargée, cependant, serait de même dans votre situation:

HTML Link that bypasses Cache

+0

+1 En principe, le message lié indique qu'il suffit d'ajouter un horodatage en tant que paramètre de chaîne de requête. Donc, quelque chose comme: 'url = url +"? q = "+ nouveau Date(). getTime();'. Je l'ai fait dans le passé. Je suppose que vous pouvez configurer vos paramètres de cache pour résoudre le problème, mais je pense que c'est beaucoup plus rapide et moins envahissant. – lbstr

0

Je recommande d'utiliser jQuery, ou d'une autre bibliothèque JavaScript décent . Si c'est le cas, vérifiez qu'il existe une option de cache dans jQuery.

Essayer de résoudre votre problème car il est, essayer ..

function MakeRequest() 
{ 
    var xmlHttp = getXMLHttp(); // just a basic XML request 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse(xmlHttp.responseText); 
    } 
    } 
    var timestamp_since_epoch = new Date().getTime(); 
    xmlHttp.open("GET", "counter.txt?"+timestamp_since_epoch, true); 
    xmlHttp.send(null); 
} 

ce que fait ci-dessus, est de générer un horodatage depuis l'époque, et l'ajouter en tant que paramètre à l'appel AJAX.

Questions connexes