2013-01-19 19 views
0

我想捕獲一個被點擊的元素的id,然後將該id傳遞給控制器​​,所有這些都不顯示鏈接或url參數中的id,也不需要編寫自定義的ajax加載。任何類似於開箱即用的可用內容?我可以捕獲一個參數,但避免在url中顯示它嗎?

+0

我不確定我是否正確理解你想要做的事情,但聽起來像一個普通的'POST'應該這樣做?我認爲你需要展示你的代碼才能獲得超出這個事實的幫助。 –

+0

您可以使用會話 – Simone

回答

1

草圖什麼是你想實現(什麼是最終目標)?這聽起來像你想在客戶端和服務器之間進行通信,而無需在用戶的url中使用ajax或編碼參數。

這樣做,這些限制的通常方式,將是:

1)裹在表單中單擊目標,將ID設置爲隱藏的價值。點擊後,只需發佈​​表單。這將需要頁面刷新,但由於它是一個POST,不會搞砸網址。 2)在cookie中設置id,強制頁面刷新,在服務器上讀取id並取消設置。這顯然也需要頁面刷新,但不會在URL中編碼任何內容。

3)使用一個不可見的iFrame加載一個感興趣的參數。這不需要刷新,並且url可以是任何東西,因爲用戶永遠不會看到它。

如果頁面刷新/更改無誤,表單路徑可能是最好的。如果你不希望頁面刷新,xhr請求顯然是最好的解決方案。這是真的很容易做到,但一個iFrame解決方案將是一個可能滿足您的需求的破解。

1

我假設你不想向用戶顯示ID,但你需要元素ID來擊中服務器。

您可以使用自定義請求標頭,但這需要AJAX方法。下面是使用jQuery

$("a.sends_element_id").click(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
    url: $(e.target).attr("href"), 
    type: "GET", 
    beforeSend: function(xhr){xhr.setRequestHeader('X-Element-ID', $(e.target).attr("id");}, 
    success: function(result) { 
     // Do something here to display the page 
     // Eg. http://stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page 
    } 
    }); 
+0

您的問題是正確的。這可能是最好的解決方案,但仍然不理想。在這個階段,我確實需要將頁面重新加載到下一頁,並響應下一頁的控制器操作。通過ajax做所有事情都需要我更新一大堆其他東西,這是不可能的。任何其他想法? – Kirill

+1

在這種情況下,通過AJAX聽起來就像是一個cookie。 – stef

+0

^是的! ...太簡單了,太棒了。謝謝。 – Kirill

相關問題