Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript处理期间数组中的数组_Javascript_Php_Jquery_Arrays - Fatal编程技术网

javascript处理期间数组中的数组

javascript处理期间数组中的数组,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我正在尝试使用Ajax处理表单,但在处理复选框时遇到了问题。我想我可以在数组中创建一个数组,将复选框添加到数据对象中,但这似乎不起作用。它不会作为对象的一部分显示在控制台或类似的地方。我尝试了一些变化,但没有任何效果。这就是它当前的样子: var formData = { 'fname' : $('input[name=fname]').val(), 'lname' : $('input[name=lname]').val(), 'phone' :

我正在尝试使用Ajax处理表单,但在处理复选框时遇到了问题。我想我可以在数组中创建一个数组,将复选框添加到数据对象中,但这似乎不起作用。它不会作为对象的一部分显示在控制台或类似的地方。我尝试了一些变化,但没有任何效果。这就是它当前的样子:

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 &amp; 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
函数。像往常一样,我可能应该更好地检查文档。我需要以任何特殊的方式解析它吗?