【问题标题】:Button in form not detected in PHP在 PHP 中未检测到表单中的按钮
【发布时间】:2013-02-02 23:05:51
【问题描述】:

我正在使用下面的 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 中未检测到按钮

【问题讨论】:

  • 按钮有自己的标签:&lt;button&gt;
  • 另外,&lt;input type="button"&gt; 不会提交表单。它们只是在那里,因此您可以在 JS 中捕获它们。
  • 当您执行print_r($_REQUEST); 时会发生什么?
  • 我通过 jquery 提交表单
  • 使用提交类型元素或添加点击事件将表单提交到您当前的按钮元素

标签: php


【解决方案1】:

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

如果你用type="submit"替换它用它来提交表单(而不是用JavaScript覆盖它),那么数据就会出现。


响应 cmets 的更新:

我正在通过 jquery 提交表单

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

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


顺便说一句,不要使用&lt;input type="button"&gt; + JS 提交表单。相反,请遵循Progressive EnhancementUnobtrusive JavaScript 的原则。使用常规提交按钮,然后使用 JavaScript 对其进行增强。


进一步更新以响应编辑:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多