1

以下のようなHTMLフォームを使用しています。

<form name="frmUploadFile" id="frmUploadFile" action="file1.php" method="post" enctype="multipart/form-data">
  <input type="file" name="flUpload" id="flUpload"/>
  <input type="button" name="btnButton" id="btnButton" value="Button Form"/>      
</form>

フォームを送信すると、PHPPostメソッドでボタンが検出されません。しかし、input type = "submit"を置き換えると、送信が検出され、その値が表示されます。

if(isset($_REQUEST['btnButton']))
{
  $File = $_FILES['flUpload'];

  print "File Name : ".$File['name'];
  exit(); 
}

次のjqueryでフォームを送信しています

$('#btnButton').click(function(){
  $('#frmUploadFile').submit(); 
});

上記は機能しません。ボタンがフォーム要素であるにもかかわらず、PHPでボタンが検出されない理由

4

1 に答える 1

2

「成功した」フォームコントロールのみがフォームデータで送信されます。JavaScriptをバインドするためだけに存在するため、成功する<input type="button">ことはありません。

これをに置き換えてフォームを送信するためtype="submit" 使用すると(JavaScriptでオーバーライドしない場合)、データが表示されます。


コメントに応じて更新します。

jqueryを介してフォームを送信しています

したがって、フォームのメソッドを呼び出すかsubmit()(ボタンは成功しません)、Ajaxを使用しています(この場合、ファイルを送信しない可能性があります)。

いずれの場合も、ボタンはデータの一部を形成しないため、フォームが送信されたかどうかを判断するためにボタンを使用しないでください。ファイルがデータに含まれているかどうか、またはリクエストの作成に使用されたメソッドがpostであったかどうかを確認してください。


余談ですが、<input type="button">フォームの送信に+JSを使用しないでください。代わりに、プログレッシブエンハンスメント控えめなJavaScriptの原則に従ってください。通常の送信ボタンを使用してから、JavaScriptで拡張します。


編集に応じてさらに更新:

JavaScriptは、送信ボタンが実行しないことを実行していません。type="submit"JSを完全に使用および削除します。

于 2013-02-18T13:42:08.590 に答える