Antes de nada: $.getJSON back button showing JSON return data not the page no fue de ayuda, como tampoco https://groups.google.com/group/angular/browse_thread/thread/3787ad609c0beb77/eb1b57069dab9f63 no lo hizo y Internet tampoco ayudó.Botón JSON para volver atrás en Chrome, Botón para volver a cargar en IE (se muestra como información desnuda)
Aquí está el problema:
Voy a llamar a una URL desde dentro de una página para obtener los datos JSON, que luego se rindió con la plantilla jQuery dentro de esta misma página.
Imaginemos que estamos en la página http://someurl.com/search y estamos empezando una petición como esta
$.ajax({
url: '/searchthis', //important, this is NOT THE SAME URL
cache: false,
type: 'GET',
headers: {
"Accept": "application/json",
},
dataType: 'json'
success: function(data) {
doSomethingWithResults(data);
}
});
La respuesta rack tiene la cabecera de control de caché se establece a no caché:
Cache-Control:no-cache
todo funciona bien, pero si deja la página para otra página en Chrome y luego presiona el botón Atrás, se le mostrarán datos JSON desnudos. El mismo comportamiento existe cuando presionas el botón de recarga en IE8. Ambos funcionan perfectamente bien si solo presionas Enter en la url en la barra de direcciones.
ahora no recibo cómo podría solucionar este problema, ya que los chicos Chrome no lo harán (ver http://code.google.com/p/chromium/issues/detail?id=108425)
Me parece como una mala interpretación en el lado de los navegadores, ya que almacena algo que realmente debería no (encabezado de respuesta) y almacena en caché algo bajo una URL incorrecta (porque la solicitud JSON no golpea la misma URL)
Me encontré con problemas similares en una aplicación express. Parece pasar incluso un objeto vacío, ya que el valor de los datos hará el truco. Gracias por publicar esto. – kdetella
De hecho, lo resolvió con el envío de un formato en los datos. Usé 'json', así:' $ .getJSON (ruta, {formato: "json"}, handler_func (respuesta) {// hacer algo}) 'para que funcione – Glenn