【问题标题】:Javascript form submission with extra parameters / custom redirect带有额外参数/自定义重定向的 Javascript 表单提交
【发布时间】:2026-02-12 01:30:01
【问题描述】:

我目前有一个表单,用户通常可以单击提交按钮进行保存。表单操作转到名为 formProcess.php 的页面,其中包含一个元重定向,它将保存所有内容,然后将用户重定向回表单。

我被要求为表单页面上的超链接添加一项新功能,该功能将在跟随超链接到不同页面之前自动保存表单。我目前有一些简单的 jQuery 连接到提交表单的超链接,如下所示:

$('#hyperlink').click(function() { 
    $(this).closest("#save_form").submit();
});

这可以工作并提交表单,但当然 formProcess.php 有一个元重定向,它会将用户带回我不想要的表单页面。

我想我是否可以在 Javascript 表单提交中传递一些额外的参数,例如 submit('redirect=link');然后我可以在 formProcess.php 中添加这样的内容:

if ($_POST['redirect'] == 'link') {
    // Redirect 1
} else {
    // Redirect 2
}

这可能吗?我似乎找不到任何关于能够使用 submit() 传递任何额外参数的信息;如果不是,您认为解决我的问题的最佳方法是什么?

【问题讨论】:

    标签: php javascript jquery forms


    【解决方案1】:

    您可以在表单中append 一个临时字段。

    $('#hyperlink').click(function() {
        $(this).closest("#save_form").append('<input type="hidden" name="redirect" value="link" />');
        $(this).closest("#save_form").submit();
    });
    

    【讨论】:

      【解决方案2】:

      在您的表单中,您可以使用隐藏输入类型。

      例如

      <input type="hidden" name="redirect" value="link"/>
      

      所以当表单提交时,您的隐藏字段值也将与其他参数一起提交。

      在您的 php 中,您可以简单地执行以下操作:

      if ($_POST['redirect'] == "link") {
          // Redirect 1
      } else {
          // Redirect 2
      }
      

      【讨论】:

      • 我是这么想的,但是这个字段也会被常规的提交按钮保存。
      • 是指你只在点击特定超链接时发送它?
      • 当用户点击超链接时,您可以使用 jquery 的 append() 函数在表单中添加隐藏字段。
      【解决方案3】:

      您可以使用 ajax 提交表单并在成功后重定向到您想要的 url。不使用 ajax 您可以在表单中添加隐藏字段并更改其值。然后服务器端您将能够检查隐藏字段的值并采取相应措施。

      【讨论】:

      • 如何使用 AJAX 提交表单数据?我知道 ajax() 对象并使用数据传递信息,但是这个表单是一个野兽,所以我宁愿不必将每个表单字段和值都堆积到 JSON 数组中。我不相信自己会错过一个(大约有 100 个字段),而且继续前进似乎很痛苦。还是您对 AJAX 的意思是别的?
      • 不知道 serialize()。为这个问题采用了不同的解决方案,但知道这一点肯定会在未来派上用场,谢谢!