JQM:在DELETE请求

时间:2016-12-29 00:05:32

标签: javascript jquery ruby-on-rails ajax jquery-mobile

使用jQuery Mobile时,如何强制JavaScript在DELETE请求和后续页面加载后运行?

我正在使用Devise以及JQM和Rails。当用户注销(删除请求)时,Javascript不会在现已注销用户发送到的页面上运行。谷歌搜索之后,我发现jQuery Mobile在data-ajax=false时会忽略data-method=delete

https://github.com/rails/jquery-ujs/issues/189 https://github.com/jquery/jquery-mobile/issues/2103

似乎没有在这个问题上取得进展。我的目标是在用户注销时很好地加载主页;我不在乎是通过data-ajax=false还是其他方法。即使是笨重/昂贵的东西现在也没问题,因为我不希望用户经常退出。

有没有人知道解决方法?

我尝试了以下两个链接。两者都有相同的结果。

<li><%= link_to "SIGN OUT", destroy_user_session_path, :method => :delete, :rel => "external" %></li>
<li><a data-method="delete" rel="external" href="/users/sign_out" class="ui-link" data-ajax="false">SIGN OUT</a></li>

无论我尝试什么,JavaScript都不会运行。也许是相关的,在用户注销并显示主页后,URL栏会显示http://localhost:3000/users/sign_out。我并不介意URL(尽管这并不理想);但我真的需要运行JavaScript。在所有其他链接中,我通过设置data-ajax=false:rel => external来完成此操作;只有删除请求才是问题。

编辑:我自己的解决方法,受到@fortuitythis discussion的评论的启发。在config/initializers/devise.rb中,我设置了config.sign_out_via = :get。现在,退出请求是GET,一切(JS-wise)都可以。

我不认为这是一个答案,因为我仍然不知道是否/如何对DELETE请求做同样的事情。另外,我想知道是否有理由不使用此解决方法,并对此表示赞赏。

0 个答案:

没有答案