【问题标题】:Submit a form instantly after it's been printed打印后立即提交表格
【发布时间】:2014-11-25 10:49:58
【问题描述】:

我正在构建一个同时需要 GET 和 POST 变量的 Web 应用程序。 get 变量将保存日期,并根据该更改列出的订单。 POST 变量用于将表单数据提交到数据库(我在同一页面上有输出和输入)。

由于一次只能使用一种 HTTP 方法,我认为我需要以以下方式使用 POST 才能读取这两个变量:

<form method="POST" action="index.php?date=foo"></form>

如果没有设置日期,这就是我将日期设置为今天的日期:

if(!isset($_GET["date"])) {
        header("location: index.php?date=". date('Y-m-d'));
    }

..但是这个重定向使用 GET,所以这不是一个选项。

我尝试了以下方法:

if(!isset($_GET["date"])) {
        echo '
            <form method="POST" action="'.$_SERVER["PHP_SELFT"].'?date='.date("Y-m-d").'"></form>
        ';
    }

这样可以,但是表单需要表现得像重定向,所以在回显之后,它需要自动提交。

我怎样才能做到这一点?

如果可能的话,我也愿意接受以其他方式实现此功能的建议。

【问题讨论】:

  • javascript / jquery 不是一个选项?
  • 如果别无选择,那就必须如此,但我想尽量减少客户端代码,因为它已经是 JS-heavy。
  • 不幸的是没有其他选择,至少我不知道:/
  • 对不起,我不明白这里的动作流程。如果我必须这样做,我会根据 $_GET-Params 准备表单,然后让用户填写表单并使用 $_POST-Request 将其提交到将重新使用旧 $_GET 的 URL - 变量(或者,将 $_GET-Stuff 写入隐藏的表单域)。所以我不完全理解这个问题......(为什么表单应该“自动提交?”用户应该触发......)

标签: php http redirect post get


【解决方案1】:

使用 Javascript 可能是这样的:

给表格起个名字:

if(!isset($_GET["date"])) {
        echo '
            <form name="MyForm" method="POST" action="'.$_SERVER["PHP_SELFT"].'?date='.date("Y-m-d").'"></form>
        ';
    }

然后您可以使用 javascript 简单地提交如下表单:

document.MyForm.submit();

【讨论】:

    【解决方案2】:

    在我看来你不需要 Javascript:

     <form name="MyForm" method="POST" action="<?=$_SERVER["PHP_SELFT"]?>?date='<?=(isset($_GET['date'])) ? $_GET['date'] : date("Y-m-d")?>"></form>
    

    它将日期放在 URL 中。如果确实设置了 $_GET['date'],它会将 $_GET['date'] 设置为日期。否则它将给出当前日期。

    希望这会有所帮助! :)

    【讨论】:

    • 他希望表单自动提交,在我看来,这在 php 中是不可能的
    • 没错,但为了放置正确的日期,他不需要 javascript。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多