如何通过AJAX以正确的格式向PHP发送一组复选框值?

时间:2016-02-23 12:55:23

标签: php jquery mysql arrays ajax

我有一组复选框,它们的值包含一些SQL代码。如果他们被检查,他们应该通过ajax发送到我的PHP文件并嵌入我的查询。

我只是经历过简单的单变量ajax传输,我只是不能通过谷歌或在stackoverflow上找到在线工作的例子。

我的ajax电话:

$("#button1").click(function(e) {
    var category_id = {};
    category_id['checkboxvalue'] = $('.checkboxes:checked').serialize();
    $.ajax({
        type: "POST",
        url: "allgemein.php?id=" + Math.random(),
        dataType: "html",
        data: category_id,
        success: function(response) {
            $("#resulttable").show().html(response);
        }
    });
});

我的复选框表单:

<input type="checkbox" class="checkboxes" name="checkb[]" value="MASTER.SYSTEM LIKE '%systemA'">System A</label>
<input type="checkbox" class="checkboxes" name="checkb[]" value="(MASTER.SYSTEM LIKE '%systemB' OR MASTER.SYSTEM LIKE '%systemC')">System B/C</label>
<input type="checkbox" class="checkboxes" name="checkb[]" value="MASTER.SERVICE LIKE '%serviceX%'">Service X</label>

现在在我的php中我想使用这样的数组:

$strWhere = '1=1';

if(true === isset($_POST['checkboxvalue']) && 0 < sizeof($_POST['checkboxvalue']))
    {
        $strWhere .= 'AND (';
        foreach($_POST['checkboxvalue'] as $checkboxval)
        {
            $strWhere .= '"%'. $checkboxval .'%" OR ';
        }
        //remove last OR
        $strWhere = substring($strWhere, 0, -3);
        $strWhere .= ')';
    }

然后将$ strWhere添加到我的SQL Where子句中。

1 个答案:

答案 0 :(得分:0)

.serialize()为您提供一系列表单编码数据。

将对象传递给data:将导致jQuery将表单中的值编码为表单编码数据。

由于已经对该数据进行了编码,因此您不希望重新编码

直接传递字符串。

data: $('.checkboxes:checked').serialize(),
  

如果我必须通过数据发送变量,我该怎么办?因为我有其他值吗?

如果您传递data一个对象,那么它将通过jQuery.param传递。您可以手动执行此操作:

data: $('.checkboxes:checked').serialize() + "&" + jQuery.param({
  some: "other",
  data: "values"
}),