序列化空数组输入[重复]
Posted
技术标签:
【中文标题】序列化空数组输入[重复]【英文标题】:serialize empty array inputs [duplicate] 【发布时间】:2012-09-16 20:26:42 【问题描述】:可能重复:Post the checkboxes that are unchecked
我在序列化空数组输入时遇到了问题。例如:
<input type="checkbox" name="test_checkbox[]" value="test" id="test">
<input type="checkbox" name="test_checkbox[]" value="test1" id="test1">
<input type="checkbox" name="test_checkbox[]" value="test2" id="test2">
当这些都没有被检查并且我提交表单(通过 POST)时,jQuery.serialize() 会排除它们并且它们不会出现在我的 $_POST/Serialized String 中。
但我需要像 test_checkbox=0 这样的东西,当没有勾选时。
我该怎么做?
【问题讨论】:
【参考方案1】:只需将其插入您的服务器代码中
$_POST['test_checkbox'] = isset($_POST['test_checkbox']) ? $_POST['test_checkbox'] : 0;
如果客户端都没有设置 $_POST['test_checkbox']
变量,那么会将它们设置为 0。不过,我建议使用新变量而不是重置 $_POST
中的条目。
【讨论】:
【参考方案2】:试试这个方法 DEMO
<form id="testform">
<input type="checkbox" name="test_checkbox[0]" id="test" checked="checked" value="true"/>
<input type="checkbox" name="test_checkbox[1]" id="test1" checked="checked" value="true"/>
<span>click</span>
</form>
脚本
$('span').click(function()
var formDate = $('#testform').serialize();
console.log(formDate);
)
现在你想这样看DEMO
$('span').click(function()
var str=$('form input:not([type="checkbox"])').serialize();
var str1=$("form input[type='checkbox']").map(function()return this.name+"="+this.checked;).get().join("&");
if(str1!="" && str!="") str+="&"+str1;
else str+=str1;
alert(str);
)
【讨论】:
取消勾选复选框,我得到控制台日志“空字符串”。那不是我想要的:) 现在查看DEMO 也试试这个方法FIDDLE以上是关于序列化空数组输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章