2011-07-23 32 views
6

Parece que en IE9, el uso de jquery .load extraerá datos del caché de los navegadores y, por lo tanto, el efecto 'en tiempo real' del contenido de carga de AJAX no funciona. ¿Hay algún tipo de cambio para forzar a jquery .load a actualizar los datos?Prevenir JQUERY .load del caché

Thansk!

Respuesta

10

La opción para desactivar el almacenamiento en caché está disponible en jQuery si está utilizando el método de bajo nivel $.ajax. Esto no está representado en la firma simplificada para load. Podría imitarlo en su lugar, asegurándose de que la URL siempre sea única. Usted puede poner la hora actual en milisegundos en el final de la URL para lograr que, dado que prácticamente siempre habrá único:

url += '?_=' + (new Date()).getTime(); 

(Esto supone que url es una cadena que contiene el URL de la solicitud y que doesn' t tiene los parámetros de consulta actualmente)

2

En el contenido de la página intenta cargar, que sea para enviar encabezado primero por lo que la solicitud no utilizará caché ...

Por ejemplo, en la parte superior del código, añadir las siguientes líneas

<?php 
header("Cache-Control: no-cache"); 
header("Pragma: no-cache"); 

//Other page contents that have to be loaded 

?> 
7

o puede utilizar $.ajax y establezca la opción cache-false lo que hará que jQuery para anexar una marca de tiempo a la URL de la solicitud bajo el capó:.

$.ajax({ 
    url: "foo.html", 
    type: "GET", 
    cache: false, 
    success: function(html) { 
     $("#foo").html(html); 
    } 
}); 
0

O puede utilizar

elem.load(url, "f" + (new Date()).valueOf()); 

para que cada solicitud obtiene un nuevo valor único añadido a la cadena de consulta