考虑以下形式:
<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接收哪个值。
答案 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。