2017-07-26 81 views
0

除了重定向到主URL,代碼似乎正常工作。如何讓ajax被重定向到主URL。在rails中的AJAX請求之後重定向到html響應

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 

回答

1

當您執行在AJAX響應redcirect,你基本上重定向響應本身,而不是請求正在取得哪些頁面從。

我喜歡把這個想象成在兩條相互平行的獨立道路上有兩輛獨立的汽車。當你從第一輛車發出ajax請求時,你實質上是在另一條路上的另一輛車上大喊大叫,告訴他們做某件事。如果你告訴那輛車向左轉,它會左轉,但第一輛車不會改變方向,它會繼續前進。

爲了讓您的應用程序能夠在第一輛仍然直行的汽車中實際執行重定向,您需要從第二輛汽車獲得某種迴應,例如「我可以左轉,但不會你有什麼好處,爲什麼不向左轉呢?「

在代碼中,這可以表示爲,而不是在您的rails控制器中執行重定向,而是在您的AJAX響應中執行重定向。

像這樣的東西可能更合適......

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

又見關於Ajax響應後,重定向另一個堆棧溢出的文章。

How to manage a redirect request after a jQuery Ajax call

+0

我使用了鏈接中給出的代碼。它像一個魅力。謝謝。 –