【问题标题】:Rails - Safari Making Extra Request via AJAX-enabled LinkRails - Safari 通过启用 AJAX 的链接发出额外请求
【发布时间】:2018-09-09 10:30:01
【问题描述】:

我构建了一个底部有按钮的表格,用于通过 data-remote="true" 加载一些额外的行。这被传递给控制器​​,有一个 format.js 响应,并且 jquery 附加到表中。除了一件事,一切都很好。 Safari 似乎正在做某种......急切地加载它遇到的第一个 URL?在 Chrome 或 Firefox 中不会出现此问题。

我的 HTML 链接如下所示:

<a turbolinks="false" data-remote="true" href="/users/name?expand=5">5</a>
<a turbolinks="false" data-remote="true" href="/users/name?expand=50">50</a>
<a turbolinks="false" data-remote="true" href="/users/name?expand=500">500</a>

当我访问我的“/users/name”路线时,我看到了:

Processing by UsersController#show as HTML
Processing by UsersController#show as JS
Parameters: {"id"=>"name"}
Parameters: {"expand"=>"5", "id"=>"name"}
Rendering users/show.html.erb within layouts/application
Rendering users/show.js.erb

同时提供 HTML 和 JS 响应。这会查询我的数据库两次(首先是初始数据,然后是额外的五行)。只有初始数据(正确)呈现在页面上。

为什么只有 Safari 在点击链接之前发出此请求?

【问题讨论】:

    标签: ruby-on-rails safari


    【解决方案1】:

    这很奇怪,但我很确定我想通了。 Safari 试图通过预先获取我在该页面上时通常单击的链接的数据来提供帮助(由于我正在对其进行测试,该链接现在被大量点击)。

    在我的第一个示例中,您可以看到始终调用“expand => 5”。我点击了“expand => 50”链接 10 次,然后尝试点击“/users/name”路径。现在,每个请求看起来像:

    Processing by UsersController#show as HTML
    Processing by UsersController#show as JS
    Parameters: {"id"=>"name"}
    Parameters: {"expand"=>"50", "id"=>"name"}
    

    有时这是一个额外的查询,但我想这并没有什么坏处。如果有的话,它会让我的数据库缓存一个半可能发生的请求。

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2012-05-18
      相关资源
      最近更新 更多