2012-05-03 17 views
2

在我的佈局,我有一項登錄/註銷鏈接,就像這樣:在Javascript重定向中包含HTTP方法?

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

這裏使用了Rails的helper建立鏈接,並解決以下HTML:

<a data-method="get" href="https://stackoverflow.com/users/sign_in">_</a> 

我將所有鏈接轉換爲按鈕,並剛剛通過URL傳遞給onClick函數以重定向瀏覽器。在這種情況下,我不認爲一個簡單的重定向會訣竅,因爲我需要指定HTTP方法。這是否是正確的方式來做到這一點,如果是這樣,我該如何告訴Javascript有關HTTP方法?

謝謝

+0

Xmlhttprequest。 – rlemon

+0

我無法讓它工作。 –

回答

2

好的,我試過XMLHttpRequest,但無法讓它工作。最後我做這個,這是一種hacktastic,但它的工作原理:

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 = "/"; 
}); 
0

大多數的瀏覽器不支持HTTP動詞的全色域。像這樣的Rails使用隱藏變量來指定預期的HTTP方法。

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

+0

我打算將一個javascript函數傳遞給按鈕的onClick。我會用JavaScript編寫什麼來完成這個任務? 謝謝 –