While using the popstate in pjax, I want the content to be loaded from the server again, instead of being replaced by cached content of the browser. If the cached content is being applied, the <script>
inside the cached content is not at all working. So, is there any way to force a normal PJAX call to the server instead of using the cached data, when we simply hit the browser's Back/Forward buttons?
Please help. Thanks.
Carefully notice line 476 to 491 in the file jquery.pjax.js here in this link: jQuery PJAX by Chris Wanstrath (defunkt). The codes under the if
actually calls the Cached Contents and the code under the else
portion is what we only want.
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)
}
So, now you know what we are going to do! Yes, just remove everything except this line:
pjax(options)
and you're good to go! It's strange that nobody gave me this solution. However, I've finally found a solution by myself, and I think this will help a lot of people.
Thanks, anyways.
No need to modify the source. You can configure pjax to load from the server again, instead of using the cache by setting its maxCacheLength
to 0
$.pjax.defaults.maxCacheLength = 0;
©2020 All rights reserved.