Backbone: 当我点击后退按钮时,json 被渲染

创建于 2011-09-24  ·  10评论  ·  资料来源: jashkenas/backbone

我有使用主干的 Rails 应用程序。 当我随机单击后退按钮或前按钮时,我会看到 json.

invalid

最有用的评论

谢谢!
为了我

$.ajaxSetup
  cache: false

够了

所有10条评论

你能提供更多信息吗? 目前,许多人在 Rails 的生产环境中使用 Backbone,但没有看到相同的行为。

具体请提供测试用例,以便我们准确重现问题。

我遇到了同样的情况 - 每当我导航到外部 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扩展名,并让浏览器缓存 json 和页面 html(如果您不介意的话),即/users/1 + /users/1.json而不是覆盖相同 url 的缓存条目。 否则你会错过浏览器缓存的好处(这很好,对吧?;)) 只是我的 2c。

@Sija你是对的,但我改为显式 .json 并且当我做测试时收到了同样的 json 覆盖页面的问题。 你知道我做错了什么吗? 呵呵
tks

+1

此页面是否有帮助?
0 / 5 - 0 等级