我可以捕获一个参数但是避免在网址中显示它吗?

时间:2013-01-19 09:50:15

标签: ruby-on-rails

我想捕获一个被点击的元素的id,然后将该id传递给控制器​​,所有这些都没有在链接或url参数中显示id,也不必编写自定义ajax加载。开箱即用的任何类似的东西?

2 个答案:

答案 0 :(得分: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
     }
  });

答案 1 :(得分:1)

你想要实现什么(最终目标是什么)?听起来你想在客户端和服务器之间进行通信而不在用户的URL中使用ajax或编码参数。

通过这些限制,通常的方法是:

1)将单击目标包装在表单中,并将id设置为隐藏值。点击,只需发布​​表单。这将需要页面刷新,但由于它是一个POST,不会破坏网址。

2)在cookie中设置id,强制页面刷新,读取服务器上的id并取消设置。这显然也需要页面刷新,但不会对网址中的任何内容进行编码。

3)使用不可见的iFrame加载具有感兴趣的param的url。这不需要刷新,网址可以是任何内容,因为用户永远不会看到它。

如果页面刷新/更改很好,表单路径可能是最好的。如果您不希望页面刷新,则xhr请求显然是最佳解决方案。它的真的很简单,但iFrame解决方案也可能是一个可能满足您需求的黑客攻击。