Backbone: Cuando hago clic en el botón Atrás, json se renderiza

Creado en 24 sept. 2011  ·  10Comentarios  ·  Fuente: jashkenas/backbone

Tengo la aplicación Rails usando backbone. Cuando hago clic en el botón de retroceso o en el botón frontal de forma aleatoria, veré json.

invalid

Comentario más útil

¡Gracias!
para mi

$.ajaxSetup
  cache: false

fue suficiente

Todos 10 comentarios

¿Puede proporcionar más información? Mucha gente está usando Backbone en producción con Rails en este momento y no están viendo el mismo comportamiento.

Específicamente, proporcione un caso de prueba para que podamos reproducir el problema con precisión.

Estoy experimentando lo mismo: cada vez que navego a una URL externa (no manejada por la aplicación backbone) o cierro la pestaña y luego regreso o vuelvo a abrir la pestaña, veo JSON. No estoy seguro de cómo puedo proporcionar un caso de prueba, pero puedo compartir algunos detalles que podrían darle una pista de lo que está sucediendo.

la aplicación usa la función _.delay para sincronizar la colección de modelos con el servidor (collection.fetch ()). El servidor es una aplicación RoR que sirve tanto la aplicación como JSON para la sincronización en la misma URL y usa encabezados para decidir si necesita entregar toda la aplicación o solo una matriz JSON de datos para modelos. ¿Podría ser el problema?

Mi otra idea es que el navegador almacena en caché la última solicitud que hizo al servidor y cuando presiona Atrás, simplemente la procesa. Si consigo salir de la aplicación rápidamente (antes de la primera solicitud de sincronización), al volver, se muestra la aplicación (no el JSON).

¿Tiene alguna idea de cómo superar esto?

Resolví el problema haciendo esto

$.ajaxSetup
  beforeSend: (xhr) ->
    xhr.setRequestHeader "Accept", "application/json"
  cache: false

¡Gracias!
para mi

$.ajaxSetup
  cache: false

fue suficiente

+1

+1

Tuve el mismo problema en mi aplicación RoR y su solución funcionó para mí.

Gracias @omenking @antonlitvinenko

Aún mejor, siempre agregue explícitamente la extensión .json a sus URL, y deje que el navegador almacene en caché tanto json como html de la página (si no le importa), es decir, /users/1 + /users/1.json lugar de sobrescribir la entrada de caché para la misma URL. De lo contrario, perderá los beneficios del almacenamiento en caché del navegador (lo cual es bueno, ¿verdad?;)) Solo mi 2c.

@Sija tiene razón, pero cambié a .json explícito y cuando hice la prueba se recibió el mismo problema de json sobrescribir la página. ¿Tienes idea de lo que estoy haciendo mal? jeje
tks

+1

¿Fue útil esta página
0 / 5 - 0 calificaciones