如何使pjax:popstate像简单的PJAX调用一样工作

时间:2016-03-23 15:42:24

标签: javascript jquery caching pjax popstate

在pjax中使用popstate时,我希望再次从服务器加载内容,而不是被浏览器的缓存内容替换。如果正在应用缓存的内容,则缓存内容中的undefined根本不起作用。那么,当我们只是点击浏览器的后退/前进按钮时,有没有办法强制对服务器进行正常的PJAX调用而不是使用缓存的数据?

请帮忙。 感谢。

2 个答案:

答案 0 :(得分:2)

请仔细注意此链接中{strong> jquery.pjax.js 文件中的 476到491 行:jQuery PJAX by Chris Wanstrath (defunkt)if下的代码实际上调用了缓存内容else部分下的代码就是我们想要的代码。

  if (contents) {
    container.trigger('pjax:start', [null, options])

    pjax.state = state
    if (state.title) document.title = state.title
    var beforeReplaceEvent = $.Event('pjax:beforeReplace', {
      state: state,
      previousState: previousState                                                     
    })                                                                                 
    container.trigger(beforeReplaceEvent, [contents, options])                         
    container.html(contents)

    container.trigger('pjax:end', [null, options])
  } else {
      pjax(options)
  }

所以,现在你知道我们要做什么了!是的,只需删除除此行以外的所有内容:

    pjax(options)

你很高兴去!很奇怪,没有人给我这个解决方案。但是,我终于找到了自己的解决方案,我认为这会对很多人有所帮助。

谢谢,无论如何。

答案 1 :(得分:0)

无需修改来源。您可以将pjax配置为再次从服务器加载,而不是通过将其~ $ awk '{ print $2,$6 }' FPAT="[^,:]+" OFS="," pet_owners.txt Jane,cat John,dog 设置为0来使用缓存

maxCacheLength