为什么序列化不包括提交按钮名称
Why serialize does not include submit button name?
为什么serialize(Jquery)不包括提交按钮名称?
在PHP中,我通常这样做:
if (isset($_POST['submit_signup'])) {
print_r($_POST);
//Then check firstname, password, etc POSTS
}
这行不通,解决办法是什么?
不确定这是否是最优雅的解决方案,但您可以使用隐藏的输入框来包含一个值(最好是一些变化的值,比如一种散列)并检查它。类似:
<input type="hidden" name="signup_submitted" value="random_hash" />
在你的代码中,你可以做:
if(isset($_POST['signup_submitted']))
{
// Do your work;
}
警告:哈希在这里不是一个安全的东西,只是一种做你习惯的事情的方法。
小更新:我注意到您还问JQuery为什么不在serialize()
输出中包含提交按钮。这是HTML草稿中指定的默认行为。只要没有按下提交按钮,就不应将其包含在提交(或序列化)的数据中。JQuery创建者决定尊重这一点,不将其包含在序列化字符串中。
类型为"submit"的<input>
标记的"value"属性用于确定标签-提交按钮的标签。它不是要发送的。
您要求的另一种解决方案可能是一个类型为"隐藏"的<input>
标签,该标签包含一个特定于其所处表单的值。
这里有一个例子:
<form method="post">
<input type="hidden" value="my_form" />
<!-- Everything else goes here unchanged. -->
</form>
然后在PHP中,您可以使用以下内容:
if(isset($_POST["my_form"]))
{
// Deal with the sent data.
}
使用.serializeArray();
和.push
首先处理单击,然后提交并组合数组似乎是一种更优雅的解决方法。它甚至适用于具有更多提交按钮的表单:
<script type="text/javascript">
$(document).ready(function() {
var submitname;
$("#submit_signup").click(function(event) {
submitname='submit_signup';
});
$('#myform').submit(function( event ){
var postarray = $('#myform').serializeArray();
postarray.push({name: submitname, value: 1});
$.post('script/myscript.php',postarray, function(data){
/* do what you need with data variable */
})
event.preventDefault(); // avoid to execute the actual submit of the form.
})
})
</script>
在这种情况下,提交字段应该具有id属性"submit_signup"。
<input type="submit" id="submit_signup" name="submit_signup" value="Submit your form" />
您可以在php代码中检查它是否是post请求:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// ...
}
相关文章:
- 使用按钮和单选按钮提交表单,但始终使用相同的值
- 使用回车按钮提交文本框表单
- 清除按钮提交后的文本区域
- 单击按钮提交输入字段值
- 我可以从 Rails 4 中的按钮提交传递参数吗?
- 如何使用inputtype=按钮提交表单
- 使用两个按钮(提交按钮和普通按钮),它们应该以不同的方式提交相同的表单
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- AJAX-按钮提交以更新表单
- 在向导表单中使用按钮提交值的最佳方式
- 如何阻止按钮提交
- 使用提交按钮提交表单,而不是页面上的其他按钮
- 用于两个功能的Javascript按钮.提交&单击
- 如何使用一个提交按钮提交三个表单
- 如何使用按钮提交表单
- 如何查看从 javascript 中的表单按钮提交调用的 php 文件中的回显
- 不能在按钮提交处理程序中使用变量
- 由多个按钮提交的一个模式引导表单
- 为什么<输入类型=“按钮”>提交表单
- 使用表单外的按钮提交表单