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

时间:2012-02-15 18:04:54

标签: 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

4 个答案:

答案 0 :(得分:4)

您可能正在寻找.serialize

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

答案 1 :(得分:4)

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

<强> HTML

<input type="checkbox" name="userList[]" value="<?=$userID;?>" /><?= $userName;?>

<强>的jQuery

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

<强> PHP

$userList = $_POST['userList'];
for($i=0;$i<sizeof($userList);$i++)
{
    $userID = $userList[$i][value] ;
    //Insert $userID to DB
}

答案 2 :(得分:1)

尝试以下方法:

        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属性,或者您需要控制它们传入的变量名称,因为您可以使用我的建议手动执行此操作。

答案 3 :(得分:1)

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

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