【问题标题】:Get values submitted to php from form从表单获取提交给php的值
【发布时间】:2017-07-06 17:53:49
【问题描述】:

考虑以下形式:

<form method="get" enctype="multipart/form-data">
  <input type="hidden" value="0" name="foo">
  <input type="checkbox" value="1" name="foo">
</form>

提交表单时,如果未选中复选框,则会请求 URL ...?foo=0。如果选中该复选框,则会请求 URL ...?foo=0&amp;foo=1。在 PHP 中,查询字符串参数会覆盖之前的任何同名参数,因此在处理后一个请求的 PHP 脚本中,foo 将具有值 1

当对表单一无所知时,使用 JavaScript 在 PHP 脚本中获取值 foo 的最佳方法是什么?理论上,可以有任意数量的名为 foo 的不同类型的输入,我想知道如果提交表单,foo 在处理请求的 PHP 脚本中的值。

据我了解,答案是最后一个启用的名为foo 的输入元素的值。通过启用,我的意思是输入元素未被禁用并且它不是按钮(按钮的名称和值不会添加到查询字符串中,除非该按钮用于提交表单)或未选中的复选框或单选按钮。

也许有一种使用 jQuery 获取此值的简单方法?

编辑

很多人建议我将输入元素重命名为foo[] 或类似名称。我想我还不够清楚,我实际上想要所有名为 foo 的输入元素,并且只接收 php 脚本中的一个值。

我的问题是如何确定 php 脚本将使用 JavaScript 接收哪个值。

【问题讨论】:

  • 为什么你的输入有相同的名字?更改 foo1 和 foo2。
  • 您是否尝试过将数组设置为名称? (name="foo[]")
  • 我只想保留最后一个启用的foo,所以它们都应该命名为foo
  • 祝你好运,保持所有相同的名字.....没有意义

标签: javascript php jquery html forms


【解决方案1】:

使用这个:

<form method="get" enctype="multipart/form-data">
  <input type="hidden" value="0" name="foo[]">
  <input type="checkbox" value="1" name="foo[]">
</form>

在 PHP 中,使用:

$params = $_GET['foo']; //params would hold array

很好用。

【讨论】:

    【解决方案2】:

    你可以对全局变量 $_GET 做一个循环

    foreach($_GET as $key=>$val) {
       echo "key = $key , val = $val";
    }
    

    如果您有多个同名输入,则需要将[]附加到名称中,以便将所有值作为数组获取

    <form method="get" enctype="multipart/form-data">
      <input type="hidden" value="0" name="foo[]">
      <input type="checkbox" value="1" name="foo[]">
    </form>
    

    要在 jquery 中获取值,请执行以下操作:

    $('input[name="foo[]"]').each(function(){
     console.log($(this).val());
    });
    

    如果您只想要一个 foo 值,但您有多个具有该名称的元素,则需要将逻辑更改为使用单选按钮

    【讨论】:

    • 我想使用 JavaScript 确定值,而不提交表单。
    • 将你的name属性改为array as name="foo[the_variable_name]",然后在php中,你可以通过一个变量轻松获取
    【解决方案3】:

    这真是糟糕的设计。您应该检查 php(后端)代码中的复选框状态。摆脱隐藏的输入:

    <form method="get" enctype="multipart/form-data">
      <input type="checkbox" value="1" name="foo">
    </form>
    

    并将其放入您的 php 代码中:

    if (isset($_GET['foo'])) {
      $foo = 1;
    } else {
      $foo = 0;
    }
    

    如果你想使用 javascript,你可以在表单提交上试试这个:

    var checkboxValue = $("input[name='foo']").prop("checked");
    

    checkboxValue 将根据复选框状态为真或假。

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      相关资源
      最近更新 更多