2009-08-25 7 views
1

J'ai ce script jquery pour appeler un fichier externe. Jusqu'ici tout va bien. Le script fonctionne bien, mais comme toujours IE fait ce qu'il veut. Le fichier externe que je charge avec ce script (weather.php) est un fichier contenant des données de conditions météorologiques en temps réel. Whit ce script, je peux rafraîchir la div à l'intérieur qui est mon fichier weather.php. Et évidemment, je ne veux pas que IE cache les données dans ce fichier. Je veux quand quelqu'un clique sur le bouton "REFRESH", la page incluse à recharger avec les nouvelles données. Dans IE cela ne se produit pas à cause du cache. Comment puis-je changer ce script pour ne pas mettre en cache le contenu de la div, ou comment puis-je dire à mon fichier inclus (weather.php) pour ne pas le mettre en cache lui-même?Empêcher la mise en cache du fichier externe chargé ajax-jquery dans IE

Voici le script:

function ajax_request() { 
$('#column_weather').html('<img src="../images/home/ajax-loader.gif" width="16" height="11" style="vertical-align:middle;"/><b>&nbsp;&nbsp;Loading...</b>'); 
$('#column_weather').load("../includes/home/weather.php"); 

} `

Et voilà comment j'appelle le script:

<a href="#" onclick="ajax_request();return false;">Refresh</a>` 

Répondre

2

Mettre une variable aléatoire sur votre chaîne de requête

$('#column_weather').load("../includes/home/weather.php?myRand=" + guid()); 

je faire revenir un guid

function s4() { 
     return (((1+Math.random())*0x10000)|0).toString(16).substring(1); 
} 

function() guid{ 
     return s4()+s4()+"-"+s4()+"-"+s4()+"-"+s4()+"-"+s4()+s4()+s4(); 
} 
+0

me battre à lui :) –

+0

Salut Zoidberg. Merci pour votre avis. J'ai essayé votre code, mais quand j'ai ajouté myRand = "+ guid() et les fonctions suivantes que vous m'écrivez, le script arrête de fonctionner.L'ancre a commencé à retourner # dans la barre d'adresse, et arrête de rafraîchir le weather.php? – Spoonk

+0

C'est étrange ... est-ce que c'est quelque chose de spécifique à l'implémentation de la page php? Je l'ai fait plusieurs fois, et YUI l'utilise aussi pour empêcher la mise en cache.Peut-être essayer un nombre aléatoire et voir – Zoidberg

0

Tu ne peux pas avoir juste des instructions de mise en cache appropriées à l'intérieur ce temps Fichier .php (pour ne pas le mettre en cache)

+0

s'il n'a pas eu accès au contenu de ce fichier? –

+0

Alors la réponse aurait été différente. Mais il référence ce fichier à partir du chemin local – DmitryK

0

var aléatoire J'attacherait la date et l'heure en tant que paramètre GET. Internet Explorer (et d'autres navigateurs) considèrent ces informations comme essentielles au chargement de la page, tout comme n'importe quelle fonction renvoie une valeur différente avec des paramètres différents. L'astuce est que vous n'avez pas besoin d'utiliser le paramètre. :)

$('#column_weather').load("../includes/home/weather.php?t=" + date()); 
+0

Salut Josh. Merci pour votre avis.J'ai essayé votre code, mais quand j'ai ajouté? T = " + date(), le script arrête son travail. L'ancre a commencé à renvoyer # après l'URL dans la barre d'adresse, et arrêter d'actualiser le weather.php? – Spoonk

+0

Je pense que vous allez devoir faire du débogage. Allumez le FireBug :) – JoshJordan

+0

Josh, merci beaucoup, pour ce rappel simple et évident;))) Maintenant tout va bien :) – Spoonk

0

Ajout d'un paramètre aléatoire à la fin de l'URL de requête aider, mais essayez d'ajouter ceci au début de weather.php:

<?php 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', FALSE); 
header('Pragma: no-cache'); 
?> 
+0

Salut, merci pour le conseil. Je l'ai déjà essayé, mais ça ne m'aide pas du tout. Le weather.php, a continué à être mis en cache d'IE. – Spoonk

Questions connexes