从表单获取提交给php的值

时间:2017-02-17 09:19:54

标签: javascript php jquery html forms

考虑以下形式:

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

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

在PHP脚本中使用JavaScript获取值1的最佳方法是什么,何时不了解表单?从理论上讲,可能存在任意数量的不同类型的foo输入,我想知道foo在处理请求的PHP脚本中提供的值。

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

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

修改

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

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

3 个答案:

答案 0 :(得分:0)

您可以对全局变量$ _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值,但是您有多个具有该名称的元素,则需要将逻辑更改为使用单选按钮

答案 1 :(得分:0)

使用它:

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

在PHP中,使用:

{% form_theme form 'AcmeBundle:Translatable:template.html.twig' %}

使用它会很好。

答案 2 :(得分:0)

这是非常糟糕的设计。你应该检查你的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 将为true或false。