在 Javascript 重定向中包含 HTTP 方法

include HTTP method in Javascript redirect?

本文关键字:HTTP 方法 包含 Javascript 重定向      更新时间:2023-09-26

在我的布局中,我有一个设计登录/注销链接,如下所示:

=if user_signed_in? then link_to "_", destroy_user_session_path, :method => :delete else link_to "_", new_user_session_path, :method => :get end

这将使用 rails 帮助程序来构建链接,并解析为以下 HTML:

<a data-method="get" href="/users/sign_in">_</a>

我正在将所有链接转换为按钮,并且刚刚将 URL 传递给 onClick 函数以重定向浏览器。 在这种情况下,我认为简单的重定向不会解决问题,因为我需要指定 HTTP 方法。 这是正确的方法吗?如果是这样,我该如何告诉Javascript关于HTTP方法的信息?

谢谢

好的,我尝试了XMLHttpRequest,但无法让它工作。 我最终这样做了,这有点黑客,但它有效:

login = function(url) {
$.ajax({
    url: url,
    type: "GET"
}).done(function(){
    window.location.href = url; 
});

}

logout = function(url) {
$.ajax({
    url: url,
    type: "DELETE"
}).done(function(){
    window.location.href = "/";
});

大多数浏览器不支持 HTTP 动词的全部范围。因此,Rails使用隐藏变量来指定预期的HTTP方法。

您需要更新<input type="hidden" name="_method" ... />字段以更改 Rails 在 RESTful 路由期间使用的 HTTP 动词。