在turbolinks页面加载后发生AJAX请求

时间:2014-10-02 14:26:53

标签: javascript jquery ajax ruby-on-rails-4 turbolinks

我在rails 4应用程序上有一个ruby,它使用了turbolinks和jquery ajax请求,现在我遇到了一些麻烦。

jquery ajax请求在正常条件下完美运行。我有一个远程表单,其中只包含一个文本字段,可以在用户输入时自动发布:

<%= form_for(section, remote: true) do |form| %>
  <%= form.text_area :title, 'data-behavior' => 'autosubmit', placeholder: "Untitled Section", rows: 1, maxlength: 255 %>
<% end %>

如果我输入字符,表单会成功发布。当它与turbolinks交互时,我的问题就出现了。以下是步骤:

  1. 输入字符
  2. 在ajax请求完成之前单击链接
    • 链接页面按预期显示
  3. 点击浏览器的后退按钮
  4. 输入字符
  5. 在ajax请求完成之前单击链接
  6. 此时,似乎turbolinks向我显示了我点击的页面的缓存版本,这意味着URL已更改。

    在turbolinks更改页面后,似乎还会发送ajax请求。事实证明,此时request.referrer是我点击的链接的URL,用于中断ajax请求,而不是请求实际来自的页面的URL。

    所以,鉴于这一切,我不知道如何解决这个问题。也许我可以通过turbolinks取消page:change上的所有ajax请求?

    你有什么想法吗?提前谢谢!

    修改

    此外,我发现在ajax请求搞砸的情况下,ajax:before事件不会被触发,但是当事情看起来按预期工作时会被触发。

0 个答案:

没有答案