【问题标题】:Form is not navigating to another page表单没有导航到另一个页面
【发布时间】:2012-03-26 17:23:51
【问题描述】:
<form id="enter" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validateForm(this);" >
    <p>
        <input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" onClick="myClickHandler(); return false;" />
    </p>
</form> 

<script type="text/javascript">
    function myClickHandler(){
         if(validation()){
                    showConfirm();
         }
    }
</script>

<?php
    session_start();

    $outputDetails = "";
    $outputDetails .= "<table id='sessionDetails' border='1'>
                            <tr>
                                <th>Number of Sessions:</th> 
                                <th>{$_POST['sessionNum']}</th>
                            </tr>";
    $outputDetails .= "</table>";
    echo $outputDetails;
?>

以上是我的表单的代码。我想要做的是,如果用户提交表单,那么它将返回到自己的页面。但是,如果“SessionNum”等于“1”,那么它应该发布表单,或者换句话说,导航到“session_marks.php”页面,但它不是 idng 这个,如果 sessionNum 等于 1 然后它仍然提交表单或导航回自己的页面,我做错了什么?

还可以说它为 sessionNum 显示一个数字,然后我提交表单并将表单提交回自己,数字消失了,我如何在提交表单时保持显示的数字?

谢谢

【问题讨论】:

  • 为什么要在 $_SERVER 变量上使用htmlentities()
  • 我不知道这只是我在使用PHP_SELF时从网上看到的一个例子
  • 你能告诉我们这一切的最终结果吗?实际输出的 HTML?
  • 请包含您的 javascript 函数引用。 onClick="myClickHandler(); return false;onsubmit="return validateForm(this);" .. 提交按钮将执行 myClickHandler() 函数,然后由于 return false; 而停止,如果你的脚本中实际上没有这些函数,它不会做任何事情......所以我们也必须看到那些 javascript 函数。
  • 给我 5 分钟的时间来告诉你 HTML 的样子。

标签: php jquery html forms


【解决方案1】:

更改表单发布目标的条件逻辑在哪里?我在form 标签中看到的是这样的:

action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>"

这将始终将formaction 设置为当前PHP 文件,而不是任何其他PHP 文件。如果您想有条件地发布到不同的文件,则需要在其中添加条件逻辑。像这样的事情(尽管可能有更好的方法来做到这一点,请记住我非常不熟悉 PHP):

action="<?php $_POST['sessionNum'] == 1 ? echo 'session_marks.php' : echo htmlentities($_SERVER['PHP_SELF']); ?>"

至于数字消失,我没有看到任何名为sessionNum 的表单元素。如果没有这样的表单元素,那么$_POST['sessionNum'] 中将没有任何内容,因此该数字将“消失”,因为没有可显示的值。

【讨论】:

  • 您好,sessionNum来自上一页,用户在上一页的文本框中输入一个数字,然后在当前页面会显示上一页输入的数字。跨度>
  • @user1292857:这将适用于当前页面的初始帖子。但是一旦他们重新发布到当前页面,如果发布的表单中没有sessionNum,将没有任何价值可显示。
  • 有什么办法可以解决这个问题,或者当我向自己提交表单时,我会采用这种陈旧的方式吗?
  • @user1292857:我不确定您要解决什么问题。如果您需要跟踪 sessionNum 值,那么您有几个选择。您可以将其存储在会话状态中(类似于$_SESSION['sessionNum'] = $_POST['sessionNum']),然后从会话状态而不是表单帖子中引用它。或者您可以将其作为隐藏字段写入表单,以便它再次发回。类似于:`
  • 您好,我设法获取了 html,请单击此链接链接,然后在文本框中输入数字 1,然后单击准备答案按钮。当您进入下一页时,单击提交详细信息按钮,您会看到该页面没有导航到新页面并且它正在给我一个通知。如果您再次阅读我的问题并查看 html,那么我认为您会理解。
【解决方案2】:

如果上面是你的实际代码,session_start();必须放在任何其他输出(html、php 的回显、打印等)之前

【讨论】:

  • 我已经把 session_start() 放在开始但仍然做同样的事情,当数字为“1”时它不会导航到另一个页面,它会导航到同一个页面并通知
猜你喜欢
  • 2021-01-09
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
相关资源
最近更新 更多