通过ajax发送相同名称的多个复选框值

时间:2014-03-02 12:15:56

标签: javascript php jquery ajax

我有多个复选框输入元素。

<input type="checkbox" name="userpages[]" id="1" value="1"/>
<input type="checkbox" name="userpages[]" id="2" value="2"/>
<input type="checkbox" name="userpages[]" id="3" value="3"/>
<input type="checkbox" name="userpages[]" id="4" value="4"/>

我想通过Ajax 将checked元素的值传递给php脚本。我试过这样做 -

var pages = $('input[name="userpages[]"]:checked');
    $.ajax({
    type: 'POST',
    url: 'post.php',
    data: {pages: pages},
    dataType: 'json',
    success: function(data) {
        if(data.status == 1) {
            alert('Successfully posted on your Facebook pages !');
        } else if(data.status == 0) {
            alert('Error !! Please try again.');
        } else {
            alert('Unknown Error. Reloading this page now...');
            location.reload();
         }
            }
    });

并在php脚本中检索值 -

  foreach($_POST['pages'] as $page_id) {
    echo $page_id;
  }

但这对我没有用。我也试过获取变量pages的值,当它被警告时会弹出'object Object'。任何帮助都会很明显。 :)

2 个答案:

答案 0 :(得分:5)

                var checked = []
        $("input[name='userpages[]']:checked").each(function ()
        {
            checked.push(parseInt($(this).val()));
        });

答案 1 :(得分:0)

阵列是正确的。但是,它是一个由jQuery DOM元素组成的数组,而不是输入值。

要在数组中以index => value对的形式获取数据,要通过AJAX发送,请使用以下内容:

var data = []

$('input[name="userpages[]"').each (function (index, element) {
    data[$(element).attr('id')] = $(element).val();
});
console.log(data);

使用jQUery AJAX函数发送收集的数据。

JSFiddle:http://jsfiddle.net/LMbxC/1/