2011-10-25 38 views
0

在ajax處理過程中,有可能重定向到控制器中的不同位置嗎?我的意思是我發送一個AJAX請求,但在處理控制器的過程中,我發現我想取消ajax請求並重定向到完全不同的位置。我以我的客戶表單使用這個。它的工作原理是這樣的:有人點擊我的窗體上創建按鈕,它通過AJAX檢查表格的屬性,如果他們錯了,它會返回錯誤,否則它重定向到新的客戶。 有什麼建議嗎?在ajax上重定向創建

+1

這是更多的在軌道上一個javascript的問題比紅寶石 – RageZ

+0

這聽起來更像是一個驗證,假設你不想在中間刷新頁面,就像RageZ說的那樣,它可能更好地通過JavaScript解決。所以,比如像通過jQuery進行客戶端驗證。 (http://bassistance.de/jquery-plugins/jquery-plugin-validation/) – jefflunt

+2

你可以使用'window.location = location;'在js.erb文件中。 – shajin

回答

0

我發現一些更更好,所以這裏是一個你需要添加到application_controller代碼:

def redirect_to(options = {}, response_status = {}) 
    if request.xhr? 
    render(:update) { |page| page.redirect_to(options) } 
    else 
    super(options, response_status) 
    end 
end 

,然後在行動中使用的標準redirect_to

0

你不能從控制器重定向,但屬性完成後檢查返回成功的checking.You「成功」可以在jQuery的檢查值是否是成功還是not.Refer下面的例子更好地理解。

$.post(
    "http://localhost/photo_tool/index.php/photo_tool/login", 
    { 
     username:$('#username').val(), 
     password:$('#password').val() 
    }, 
    function(result){ 
    if(result=='success') 
    { 
     window.location.href = 'Your URL here'; 
     //You can also use window.location.replace("Your URL here"); 
    } 
    else 
    { 
    $('#error').html(result); 
    } 
    }); 

在上例中,控制器在成功登錄時返回'success'。