Backbone: Когда я нажимаю кнопку "Назад", выполняется рендеринг json.

Созданный на 24 сент. 2011  ·  10Комментарии  ·  Источник: jashkenas/backbone

У меня есть приложение Rails, использующее магистраль. Когда я случайным образом нажимаю кнопку "Назад" или "переднюю", я вижу json.

Самый полезный комментарий

Спасибо!
для меня

$.ajaxSetup
  cache: false

было достаточно

Все 10 Комментарий

Вы можете предоставить дополнительную информацию? Многие люди в настоящее время используют Backbone в производственной среде с Rails и не наблюдают такого же поведения.

В частности, предоставьте тестовый пример, чтобы мы могли точно воспроизвести проблему.

Я испытываю то же самое - всякий раз, когда я перехожу к внешнему URL-адресу (не обрабатывается магистральным приложением) или закрываю вкладку, а затем возвращаюсь или повторно открываю вкладку - я вижу JSON. Я не уверен, как я могу предоставить тестовый пример, но могу поделиться некоторыми подробностями, которые могут дать вам представление о том, что происходит.

приложение использует функцию _.delay для синхронизации коллекции модели с сервером (collection.fetch ()). Сервер представляет собой приложение RoR, которое обслуживает приложение и JSON для синхронизации по одному и тому же URL-адресу и использует заголовки, чтобы решить, нужно ли обслуживать все приложение или только массив данных JSON для моделей. Может ли это быть проблема?

Другая моя идея заключается в том, что браузер кэширует последний запрос, сделанный им на сервер, и когда вы нажимаете назад, он просто отображает его. Если мне удастся быстро покинуть приложение (до первого запроса на синхронизацию), то при возврате отобразится приложение (а не JSON).

У вас есть идеи, как это преодолеть?

Я решил проблему, сделав это

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

Спасибо!
для меня

$.ajaxSetup
  cache: false

было достаточно

+1

+1

У меня была такая же проблема в моем приложении RoR, и ваше решение сработало для меня.

Спасибо @omenking @antonlitvinenko

Более того, всегда явно добавляйте расширение .json к своим URL-адресам и позволяйте браузеру кэшировать как json, так и страницу html (если вы не против), то есть /users/1 + /users/1.json вместо перезаписи записи в кеше для того же URL. В противном случае вы упустите преимущества кеширования браузера (что приятно, правда?;)) Только мой 2c.

@Sija, вы правы, но я перешел на явный .json, и когда я делаю тест, была получена та же проблема, что json перезаписывает страницу. Вы хоть представляете, что я делаю не так? хе-хе
спасибо

+1

Была ли эта страница полезной?
0 / 5 - 0 рейтинги