【问题标题】:How to send an array of checkbox values via AJAX to PHP in the right format?如何通过 AJAX 以正确的格式将一组复选框值发送到 PHP?
【发布时间】:2016-06-05 07:53:17
【问题描述】:

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

我只对简单的单变量 ajax 传输有经验,我只是无法使我通过 google 或 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 子句中。

【问题讨论】:

  • data: category_id:category_id
  • @Drudge 你是什么意思?通常,当我不发送数组而只是发送单数时,多个值data:category_id,工作正常..

标签: php jquery mysql arrays ajax


【解决方案1】:

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

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

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

直接传递字符串。

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

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

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

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

【讨论】:

  • 感谢您的回复。如果我必须通过 data: 发送变量,因为我有其他值,我该怎么办? (我最小化了我对这个问题的 ajax 调用..)
  • 你的意思是像data: $('.checkboxes:checked').serialize() + "&amp;" + jQuery.param({ data: category_id }), success: function(response) { $("#resulttable").show().html(response); 吗?
  • 谢谢,我会尽快试用
  • 我还有一个问题。即使这个ajax调用有效,我怎么能在我的php中调用checkboxvariables?在使用category_id['checkboxvalue'] 之前,我可以通过$_POST['checkboxvalue'] 调用它们,但是当我直接传递字符串时 - 我怎样才能在 php 中找到它们?抱歉一连串的问题:(我真的很高兴回答
  • $_POST['checkb'][] 因为这是输入的名称。
猜你喜欢
  • 2014-03-13
  • 2021-09-22
  • 1970-01-01
  • 2012-09-08
  • 2010-09-22
  • 2018-12-03
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
相关资源
最近更新 更多