Estoy usando getJSON
para obtener los resultados del lado del servidor, pero tengo problemas de caché del navegador. Quiero que el caché sea falso. Intenté usar esto justo antes de mi getJSON
llamada.
$.ajaxSetup({
cache: false
})
Pero no obtengo los resultados esperados. Todavía muestra los resultados anteriores.
También identifiqué algunas otras soluciones, como usar, .ajax
pero realmente no quiero usar eso.
jquery
jquery-ui
getjson
browser-cache
Abhinav
fuente
fuente
Respuestas:
Su código solo necesita un disparador para que esté habilitado.
Esto le permitirá deshabilitar el caché en todos los futuros ajax
$(document).ready(function() { $.ajaxSetup({ cache: false }); });
Espero eso ayude :)
fuente
Puede usar esto, que deshabilitará el caché globalmente:
$(document).ready(function() { $.ajaxSetup({ cache: false }); });
o que, en lugar de
$.getJSON
, deshabilitar el caché solo para tal solicitud:$.ajax({ cache: false, url: "/path/to.json", dataType: "json", success: function(data) { ... } });
fuente
las respuestas de semente y bonesnatch son correctas, pero si desea usar $ .getJSON y en otro lugar, aproveche su almacenamiento en caché (no desea configurar el caché en falso para todas las llamadas), pero desea romper el caché solo por un llamada única, puede inyectar 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 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 al código y, por lo tanto, siempre será único.
fuente