如何通过jquery中的ajax发送复选框组?

我需要通过jquery中的ajax发送一组复选框(以及其他一些数据)。

到目前为止我所做的是:

var arr = $('#somediv input[type="checkbox"]:checked').val() || []; $.post("/somephpfile.php", {str: str, arr: arr}, function(data) {... 

但我的问题是arr永远不是一个数组。 我需要的是发送它?str = data&arr = foo&arr = bar

我想这是一个非常简单的问题,但由于我对jquery很新,我会问专业人士。 我该怎么办?

谢谢。


我的坏,这是PHP

您可能正在寻找.serialize

更通用的解决方案是使用包含所有参数的表单,然后将其序列化。

遇到类似的问题,经过多次拉扯头发后,用SerializeArray修复它

HTML

  

jQuery的

 var userList = $('input[type=checkbox]:checked').serializeArray(); 

PHP

 $userList = $_POST['userList']; for($i=0;$i 

使用serialize() ,因为val()只获取jquery集合中第一个元素的值。 http://api.jquery.com/serialize/

 var postdata = $('#somediv input[type="checkbox"]').serialize(); $.post("/somephpfile.php", postdata, function(data) {... 

请尝试以下方法:

  var selectedItems = []; $('#somediv input[type="checkbox"]:checked').each(function () { selectedItems .push($(this).val()); }); var postData = { "str": str, "arr": selectedItems }; $.ajax({ type: "POST", url: "/somephpfile.php", data: postData, traditional: true, success: function (data) { ... } }); 

PS我假设你知道序列化,它不适合你的场景。 绝对先检查出来(虽然它会序列化整个元素)。 这意味着如果您的复选框没有相同的NAME属性,或者您需要控制它们传入的变量名称,因为您可以使用我的建议手动执行。