替代jQuery的serialize()?

时间:2011-09-15 16:22:05

标签: php jquery ajax serialization input

我有很多inputname属性。我知道如何将它们全部作为jQuery对象!

console.log()打印出类似这样的内容:

[
<input type=​"checkbox" name=​"people" value=​"33" checked=​"checked">​
, 
<input type=​"checkbox" name=​"people" value=​"1" checked=​"checked">​
]

之后,我需要向服务器发送一个包含所有人ID(value属性)的AJAX请求。

显然,我可以将serialize()链接到该jQuery对象,结果如下:

people=33&people=1

......但我正在寻找'更友好'的方式。对PHP更“友好”,所以我可以这样做:

foreach ($_POST['people'] as $people) {

    echo $people;

}

4 个答案:

答案 0 :(得分:5)

PHP需要多个同名的复选框才能使用括号表示法。使用以下命名约定应该允许您执行所需的操作。

<input type=​"checkbox" name=​"people[]" value=​"1" checked=​"checked">​

答案 1 :(得分:3)

只需将[]添加到您的姓名中即可获得复选框名称...

<input type=​"checkbox" name=​"people[]" value=​"33" checked=​"checked">​
<input type=​"checkbox" name=​"people[]" value=​"1" checked=​"checked">​

然后$_POST['people']将是输入值的数组......

答案 2 :(得分:2)

.serializeArray()可能会做到这一点:http://api.jquery.com/serializeArray/

答案 3 :(得分:0)

好的,我会回答我的问题。 :)

循环遍历jQuery对象(其中<input>是)并将元素的value添加到数组中。

var data = [];

$(this).parents('form').find('input[name="people"]').each(function() {

    data.push($(this).val());

});

console.log(data);

$.post('over/the/rainbow', {'people' : data});

修改

在我看来,@ bstakes方式更清晰。