【问题标题】:simulate POST on link/button click event在链接/按钮单击事件上模拟 POST
【发布时间】:2012-11-12 05:24:51
【问题描述】:

有一个与给定用户相关的可编辑项目列表,我希望非 GET 启动;即,当单击给定条目的编辑按钮时,我希望将POST 启动到目标编辑表单屏幕。

我怎样才能做到不将列表中的每个编辑按钮都包装在<form>...</form> 中?

目前我有一个 jQuery location.href 将用户踢到目标编辑屏幕;然而,使用 GET,用户可以通过简单地输入他们选择的 URI 来输入他们喜欢的任何 id。

$('.game-edit').click -> 
  location.href = '/admin/linescore/edit/' + getID($(this))

我可以点击事件 POST a la location.href吗?

感谢您的想法,谢谢

【问题讨论】:

  • 这是什么意思? “我可以点击事件 POST a la location.href”
  • 设置浏览器位置会执行 GET。为什么不改用 Ajax?
  • 您可以在点击处理程序中调用$("form").submit(),这是您想要的吗?
  • @Barmar,有一个可编辑项目列表,每个项目都有编辑/删除按钮;单击编辑按钮将用户踢到目标编辑表单屏幕
  • @Diodeus 是的,我可能会通过 ajax 将响应注入到目标 div 容器中

标签: jquery rest post click hyperlink


【解决方案1】:
$('a').click(function(){
$('#formID').action = $(this).href
$('#formID').submit();
})

【讨论】:

  • 对,但这不是表单,它是一个以表单屏幕为目标的可编辑项目列表
  • 根据您的要求,您希望发布这些链接。 #formID 将是一个隐藏表单,您可以修改上面的代码以在此表单的输入或隐藏输入中填充数据,然后将它们发布到目标。
【解决方案2】:

你有什么理由不能让 jQuery 为你做 POST 吗?给定:

<a class="edit" href="...">Click Me</a>

...然后:

$('a.edit').click(function(){
    var postUrl = $(this).attr('href');  // href attribute of clicked link
    $.post(.....); 
});

编辑 - 为清楚起见进行了更新

干杯

【讨论】:

  • +1,有趣的是,“$.post”的目标是什么,链接的href?
  • hmmm,这行得通,但我需要将响应注入到一些 DOM 容器中,在这种情况下我不想这样做。有没有办法“$.post”并转到目标而不是异步获取响应?
  • 是的,使用表格。如果您愿意,您可以在点击处理程序中动态构建它。然后只需将其 POST 操作设置为链接的 href 并提交即可。
  • meh,不是我想听到的 ;-),但如果这是唯一的方法,就这样吧,将不得不按照您的建议形成包装编辑按钮或在点击时动态构建。这些都不是我一直在寻找的直接重定向样式方法...可能需要换档和 ajax 注入响应
【解决方案3】:

好的,这里的答案很好,但在易于实现方面并不是我真正想要的(是的,只是 ajax,但不想处理将表单内容响应注入 DOM 容器然后处理注入带有 jq “live” 的表单的 ajax 事件和任何脚本加载问题)。

工作很简单:创建一个空的表单块:

<form id="game-list" action="" method="post"></form>

然后,给定一个编辑按钮:

<input id="edit-@x.id" type="button" value="edit" class="game-edit" />

在点击事件时,填充表单的操作并提交:

$('.game-edit').click ->
  $('#game-list').attr('action', '/admin/linescore/edit/' + getID($(this)))
  gamesForm.submit()

这比我认为我需要做的要直接得多,我认为我需要将每个编辑按钮包装在一个表单包装器中。当然,时区时差 6 小时,我想的不是很清楚,工作的好时机 ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多