jquery pjax请求发送两次

我有一个rails应用程序,我继续得到一个奇怪的行为与pjax请求。 当我查看我的开发日志时,我可以看到正在发出两个请求。 第一个请求是pjax而下一个请求不是。 结果页面仍然重新加载。

如果有人能帮助我,我感激不尽。

JQuery pjax插件有一个默认的error handling程序,它只是重新加载目标页面。 超时过去时会调用此error handling程序,pjax设置得非常低。 因此,如果您的请求时间过长,您将看到两个相同的请求。 pjax请求(可能设置了_pjax属性),后跟另一个非pjax请求。 在浏览器中,您可能会看到整个页面重新加载。

我在我的情况中找到的一件事是,响应本身并没有那么长时间。 但是,返回的HTML包含flash嵌入。 我不确定pjax代码是否在加载flash嵌入之前或之后获得响应。

为了解决这个问题,我改变了我的PJax代码看起来像……

 $.pjax({ url: xhr.getResponseHeader('Location'), container: '#container', timeout: 4000 // pick a suitable timeout }); 

当然,这是直接调用pjax。 如果您没有直接调用它,则必须找到类似的解决方案。

我也遇到过这个问题 – 看起来这是一个与浏览器缓存有关的问题。 我注意到,如果我清除历史记录并缓存它会停止在Chrome中发生。 我还没能解决它,但我想它与禁用浏览器缓存有关?