ejemplos - ¿Cómo configurar caché falso para getJSON en JQuery?
ajax cache false (3)
Estoy usando getJSON para buscar los resultados desde el lado del servidor pero con problemas de caché del navegador. Quiero que el caché sea falso. Intenté usar esto justo antes de mi llamada getJSON.
$.ajaxSetup({
cache: false
})
Pero no estoy obteniendo los resultados esperados. Todavía muestra los resultados anteriores. Cualquier ayuda será apreciada.
También identifiqué algunas otras soluciones como usar .ajax pero realmente no quiero usar eso.
Las respuestas de semente''s y bonesnatch son correctas, pero si desea usar $ .getJSON y en otro lugar, aproveche su caché (no desea configurar el caché en falso para todas las llamadas), pero quiere reventar el caché solo por un llamada única, puede insertar una marca de tiempo en la propiedad de datos de $ .getJSON (). Al agregar un valor único a la cadena de consulta de la solicitud, la solicitud siempre será única y el navegador no la almacenará en la memoria caché; siempre obtendrá los datos más recientes.
Versión larga:
var ts = new Date().getTime();
var data = {_: ts};
var url = ''/some/path.json'';
$.getJSON(url, data);
Todo en una versión:
$.getJSON(''/some/path'', {_: new Date().getTime()});
Ambos dan como resultado la siguiente solicitud:
/some/path.json?_=1439315011130
donde el número al final es la marca de tiempo para el momento en que se llama el código y, por lo tanto, siempre será único.
Puede usar esto, que desactivará el caché globalmente:
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
o que, en lugar de $.getJSON
, para deshabilitar el caché solo para dicha solicitud:
$.ajax({
cache: false,
url: "/path/to.json",
dataType: "json",
success: function(data) {
...
}
});
Su código solo necesita un desencadenador para que se habilite.
Esto le permitirá desactivar el caché en todos los ajax futuros
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
Espero eso ayude :)