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>

当我提交表单时,PHP Post 方法中未检测到该按钮。但是,当我替换输入 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

只有“成功”的表单控件才会在表单数据中提交。An<input type="button">永远不会成功,因为它的存在仅仅是为了将 JavaScript 绑定到它。

如果您将其替换为type="submit" 使用它来提交表单(而不是用 JavaScript 覆盖它),那么数据将出现。


更新以回应评论:

我正在通过 jquery 提交表单

因此,您要么调用submit()表单的方法(这不会使任何按钮成功),要么正在使用 Ajax(在这种情况下,您也可能不会提交文件)。

在任何一种情况下,按钮都不会构成数据的一部分,因此不要使用它来确定表单是否已提交。检查文件是否在数据中,或者用于发出请求的方法是否为post


顺便说一句,不要使用<input type="button">+ JS 提交表单。相反,请遵循渐进式增强不显眼的 JavaScript原则。使用常规提交按钮,然后使用 JavaScript 增强它。


针对编辑的进一步更新:

您的 JavaScript 没有做任何提交按钮不会做的事情。完全使用type="submit"和删除 JS。

于 2013-02-18T13:42:08.590 回答