0

2番目のフォームアクションが機能しないフォーム内のフォームを呼び出そうとしています。解析しませんでした。サンプルプログラムには、送信ボタンに添付されたメインフォームが1つあり、内部フォームはダウンロードボタンになります。

更新されたコード:

<?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:他のform要素を含めることはできません。

また、仕様に含まれている場合は、特定のユーザーエージェントベンダーがそれをどのように処理するかに依存しないでください。そして、あそこの人々が「してはいけない」のようなフレーズをどのように使用するかをよく知らない場合に備えて、これがあります:

必須:この仕様では、「必須」という言葉は、コンテキストに応じて、実装または厳密に準拠したXHTMLドキュメントの必須要件として解釈されます。「しなければならない」という用語は、「しなければならない」と同じ定義を持っています。

編集:私は興味があり、HTML5仕様にはネストされたフォームを禁止する言語も含まれていることがわかりました。

編集(コード提案):

方法1:兄弟形式のアプローチ

<?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>

方法2:多目的ハンドラーアプローチ

<?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 に答える