jquery pjax请求发送两次

标签 jquery ruby-on-rails pjax

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

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

最佳答案

JQuery pjax 插件有一个默认的错误处理程序,它将简单地重新加载目标页面。当超时时间过去时,这个错误处理程序将被调用,pjax 将超时时间设置得非常低。因此,如果您的请求花费的时间太长,您将看到两个相同的请求。 pjax 请求(可能设置了 _pjax 属性),后面跟着另一个非 pjax 请求。在浏览器中,您可能会看到整个页面重新加载。

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

为了解决这个问题,我将 PJax 代码更改为如下......

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

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

关于jquery pjax请求发送两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153263/

相关文章:

ruby-on-rails - 如何从外部访问 Ruby on Rails 应用程序的数据?

ruby-on-rails - stripe中如何处理支付成功?

javascript - 如何使 PJAX 与 Express 和 EJS 一起工作?

javascript - 如何在内容加载后隐藏微调器

javascript - 如何使用 Django 接收 ajax 请求?

javascript - Jquery 动画第二张照片不显示

JQuery 动画和 Meteor

javascript - 在 JavaScript 中传递数组 HTML 元素

ruby-on-rails - 在 Rails 中组织站点导航操作

jquery - pjax成功后绑定(bind)日期选择器会导致无限循环