javascript处理期间数组中的数组
我正在尝试使用Ajax处理表单,但在处理复选框时遇到了问题。我想我可以在数组中创建一个数组,将复选框添加到数据对象中,但这似乎不起作用。它不会作为对象的一部分显示在控制台或类似的地方。我尝试了一些变化,但没有任何效果。这就是它当前的样子:javascript处理期间数组中的数组,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我正在尝试使用Ajax处理表单,但在处理复选框时遇到了问题。我想我可以在数组中创建一个数组,将复选框添加到数据对象中,但这似乎不起作用。它不会作为对象的一部分显示在控制台或类似的地方。我尝试了一些变化,但没有任何效果。这就是它当前的样子: var formData = { 'fname' : $('input[name=fname]').val(), 'lname' : $('input[name=lname]').val(), 'phone' :
var formData = {
'fname' : $('input[name=fname]').val(),
'lname' : $('input[name=lname]').val(),
'phone' : $('input[name=phone]').val(),
'email' : $('input[name=email]').val(),
'sqft' : $('select[name=sqft]').val(),
'checked': $('input[name=services[]]:checked').each(function(){
checked.push($(this).val());
});
};
我知道我可以使用serialize()
,但老实说,我对处理该方法中的数据并不熟悉。因为我需要用PHP
处理数据,所以我想坚持我所知道的
这是复选框的标记:
<div class="checks span6">
<p>Check which services you are interested in:</p><br>
<input type="checkbox" name="services[]" value="janitorial"><p>Janitorial</p><br>
<input type="checkbox" name="services[]" value="window"><p>Window cleaning</p><br>
<input type="checkbox" name="services[]" value="carpet"><p>Carpet service</p><br>
<input type="checkbox" name="services[]" value="restroom"><p>Restroom sanitation</p><br>
<input type="checkbox" name="services[]" value="facility"><p>Facility Maintenance</p><br>
<input type="checkbox" name="services[]" value="floors"><p>Floor strippin & re-waxing</p><br>
<input type="checkbox" name="services[]" value="moving"><p>Move in or move out</p><br>
<input type="checkbox" name="services[]" value="other"><p>Other</p><br>
</div>
检查您感兴趣的服务:
清洁的
窗户清洁
地毯服务
卫生间卫生设施
设施维护
地板带销和;重新上蜡
迁入或迁出
其他
当前发布的代码中存在语法错误,额外关闭后的code>)
用于每个方法。您还应该转义name属性值的[]
部分,或者在选择器中用引号将其括起来。除此之外,您存储的是jQuery对象,而不是选定值的数组。您可以使用map
方法
'checked': $('input[name="services[]"]:checked').map(function(){
return this.value;
}).get()
如果您愿意学习新思想,下面介绍如何使用.serialize()
——非常简单,服务器端(PHP)无需任何更改:
var formData = $('form').serialize(); //THAT's it!!
在您的情况下,这将产生以下查询字符串
——已经进行了URL编码——这是当前数据在发布
之前将转换为的内容:
services%5B%5D=janitorial&services%5B%5D=window&services%5B%5D=carpet&services%5B%5D=restroom&services%5B%5D=facility
javascript不是javaoops。真的很晚了,我真的很累。哈哈。请包括你的复选框code@eignhpants在PHP中应该非常简单,具体取决于表单方法,可以是$\u POST['services']
应该以数组的形式包含选中的复选框,如果使用ajax将其传输到PHP,下面的答案如果正确+1@Ghost问题是ajax,下面的帖子解决了。谢谢。这很有效,非常感谢。我不知道.map
函数。像往常一样,我可能应该更好地检查文档。我需要以任何特殊的方式解析它吗?