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