在 rails 中的 AJAX 请求后重定向到 html 响应

Redirecting to html response after AJAX request in rails

除了重定向到首页外,代码似乎可以正常工作 URL.How 我可以让 ajax 重定向到首页 URL。

JS函数

func1: function(dest_board, copy_option, member_option){
      $.ajax({
        url: "get_values",
        type: "POST",
        data: {new_board: dest_board, copy_option: copy_option, member_option: member_option}
      }).success($.proxy(function(data, xhr) {
      },this));
    }

在控制器函数中

respond_to do |format|
      format.html {
        redirect_to home_url
      }
end

当您在 AJAX 响应中执行重定向时,您实际上是在重定向响应本身,而不是从哪个页面发出请求。

我喜欢将其视为在 2 条相互平行的独立道路上有 2 辆独立的汽车。当您从第一辆车发出 ajax 请求时,您实际上是在对另一条路上的另一辆车大喊大叫,告诉他们做某事。如果你告诉那辆车左转它会左转,但是第一辆车没有改变方向,它只是一直向前。

为了让您的应用程序在第一辆仍在直行的汽车中实际执行重定向,您需要从第二辆汽车获得某种响应,可能会说 "I can turn left, but it won't do you any good. Why don't you turn left instead?".

在代码中,这可以表示为不是在 rails 控制器中执行重定向,而是在 AJAX 响应中执行重定向。

像这样可能更合适...

.success($.proxy(function(data, xhr) {
    window.location.replace("/home");
},this));

另请参阅另一篇关于 AJAX 响应后重定向的 Stack Overflow 文章。

How to manage a redirect request after a jQuery Ajax call