获取PHP表单中的复选框值

时间:2014-01-03 12:56:57

标签: php jquery ajax forms post

我到处都看过,我知道我正在使用的方法应该有效,因为很多人已经问过这个问题并且它有效。

但是,对我自己来说,似乎并不想工作。

问题:为什么我的数组只显示列表中的最后一项?

代码:

形式:

<form id="searchglue" method="post" action="<?=base_url();?>index.php/main/search">
    <input type="checkbox" name="colour[]"  id="Amber"                  value="Amber">
    <input type="checkbox" name="colour[]"  id="Beige"                  value="Beige">
    <input type="checkbox" name="colour[]"  id="Black"                  value="Black">
    <input type="checkbox" name="colour[]"  id="Brown"                  value="Brown">
    <input type="checkbox" name="colour[]"  id="Clear"                  value="Clear">
    <input type="checkbox" name="colour[]"  id="Cola"                   value="Cola">
    <input type="checkbox" name="colour[]"  id="Cream"                  value="Cream">
    <input type="checkbox" name="colour[]"  id="Dark Blue"              value="Dark Blue">
    <input type="checkbox" name="colour[]"  id="Dark Green"             value="Dark Green">
    <input type="checkbox" name="colour[]"  id="Glitter Gold"           value="Glitter Gold">
    <input type="checkbox" name="colour[]"  id="Glitter Green"          value="Glitter Green">
    <input type="checkbox" name="colour[]"  id="Glitter Multicoloured"  value="Glitter Multicoloured">
    <input type="checkbox" name="colour[]"  id="Glitter Red"            value="Glitter Red">
    <input type="checkbox" name="colour[]"  id="Glitter Silver"         value="Glitter Silver">
    <input type="checkbox" name="colour[]"  id="Gold"                   value="Gold">
    <input type="checkbox" name="colour[]"  id="Light Blue"             value="Light Blue">
    <input type="checkbox" name="colour[]"  id="Light Brown"            value="Light Brown">
    <input type="checkbox" name="colour[]"  id="Light Green"            value="Light Green">
    <input type="checkbox" name="colour[]"  id="Oak"                    value="Oak">
    <input type="checkbox" name="colour[]"  id="Orange"                 value="Orange">
    <input type="checkbox" name="colour[]"  id="Pale Amber"             value="Pale Amber">
    <input type="checkbox" name="colour[]"  id="Red"                    value="Red">
    <input type="checkbox" name="colour[]"  id="Silver"                 value="Silver">
    <input type="checkbox" name="colour[]"  id="White"                  value="White">
    <input type="checkbox" name="colour[]"  id="Yellow"                 value="Yellow">
</form>

结束的地方:

foreach($_POST['colour'] as $r):
    echo $r;
endforeach;

我正在使用ajax来获取结果,我认为这是获取所有name属性的错误所在,但我不知道如何处理它......

所以这是ajax:

$('form#searchglue').on('change', function() {
    var obj = $(this),
    url = obj.attr('action'),
    method = obj.attr('method'),
    data = {};

    obj.find('[name]').each(function(index, value) {
        var obj = $(this),
        name = obj.attr('name'),
        value = obj.val();

        data[name] = value;
    });

    $.ajax({
        url: url,
        type: method,
        data: data,
        cache: false,
        success: function(response) {
            $("#load").html(response);
        }
    });
    return false;
});

无论我做什么,无论是勾选某些东西,还是完全取消它们,结果总是黄色(输入列表中的最后一个)。

1 个答案:

答案 0 :(得分:2)

使用serialize()方法获取表单值

$('form#searchglue').on('change', function() {
    var obj = $(this);
    url = obj.attr('action');
    method = obj.attr('method');

    data =obj.serialize(); 

    $.ajax({
        url: url,
        type: method,
        data: data,
        cache: false,
        success: function(response) {
            $("#load").html(response);
        }
    });
    return false;
});

文档:.serialize()

相关问题