0

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

4

2 回答 2

1

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

在这些限制下,通常的做法是:

1)将点击目标包裹在一个表单中,并将id设置为隐藏值。点击后,只需发布​​表格。这将需要刷新页面,但由于它是 POST,因此不会弄乱 url。

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

3) 使用不可见的 iFrame 加载带有感兴趣参数的 url。这不需要刷新,并且 url 可以是任何东西,因为用户永远不会看到它。

如果页面刷新/更改没问题,表单路由可能是最好的。如果您不想刷新页面,xhr 请求显然是最好的解决方案。这真的很简单,但 iFrame 解决方案可能也能满足您的需求。

于 2013-01-19T20:08:57.643 回答
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
     }
  });
于 2013-01-19T10:24:43.193 回答