0

我试图在第二个表单操作不起作用的表单中调用一个表单。它没有解析。我的示例程序有一个附加到我的提交按钮的主表单,内部表单是一个下载按钮。

更新代码:

<?php
$fullPath = "staff.doc";
<form id="Staff" name="Staff" method="post" action="download_preview.php">
echo "<input type=\"hidden\" name=\"fullPath\" value=\"$fullPath\"/>";
echo "<input type=\"submit\" name=\"submit\" value=\"Download\"/>";
echo "<input type=\"submit\" id=\"Submit\" name=\"Submit\" value\="Submit\"/>";
echo "</form>";

<?php
switch($_POST['submit']) 
{
case "Submit":

break;
case "Download":
$fullPath = $_POST['fullPath'];
// download file

     opendir("$fullPath");

break;
default:
}
?>

我已经更新了多处理程序方法。但是我仍然无法调用下载路径。下载代码以前使用单个表单。

4

2 回答 2

3

XHTML 规范中所述

form:不得包含其他表单元素。

如果它在规范中,您不应该依赖任何给定的用户代理供应商如何处理它。如果你不熟悉那边的人如何使用“不得”之类的短语,那就是:

Must:在本规范中,“必须”一词被解释为对实现或严格符合 XHTML 文档的强制要求,具体取决于上下文。术语“应”与“必须”具有相同的定义。

编辑:我很好奇,发现HTML5 规范还包括禁止嵌套表单的语言。

编辑(代码建议):

方法一:兄弟形式方法

<?php $fullPath = $_SERVER['DOCUMENT_ROOT']."/doc/store"."$T"; ?>
<form id="Staff" name="Staff" method="post" action="gotonextpage.php">
  <input type="submit" name="Submit" value='Submit'>
</form>
<form name="download" action="download.php" method="post">";
  <input type="hidden" name="fullPath" value="<?php echo $fullPath ?>"/>";
  <input type="submit" name="submit" value="Download"/>";
</form>

方法二:多用途处理程序方法

<?php $fullPath = $_SERVER['DOCUMENT_ROOT']."/doc/store"."$T"; ?>
<form id="Staff" name="Staff" method="post" action="downlod_or_gotonextpage.php">
  <input type="submit" name="Submit" value='Submit'>
  <input type="hidden" name="fullPath" value="<?php echo $fullPath ?>"/>";
  <input type="submit" name="submit" value="Download"/>";
</form>

然后制作 downlod_or_gotonextpage.php

switch($_POST['submit']) {
  case "Submit":
    // go to next page, either with 302, include, or whatever is appropriate
    break;
  case "Download":
    // do downloading, perhaps also with a 302 first...
    break;
  default:
    // 404, or 302 to the original form page
}
于 2012-07-07T03:28:53.440 回答
0

您不能根据 HTML 将表单放入表单中。我不太清楚为什么,在这个例子中,无论如何你都需要它。摆脱外部形式。

于 2012-07-07T03:30:06.890 回答