簡體   English   中英

如何通過AJAX以正確的格式將復選框值數組發送到PHP?

[英]How to send an array of checkbox values via AJAX to PHP in the right format?

我有一組復選框,其值中包含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子句中。

.serialize()為您提供一串格式編碼的數據。

將對象傳遞給data:將導致jQuery將表單中的值編碼為表單編碼數據。

由於您已經對該數據進行編碼,因此您不想對其進行重新編碼

直接傳遞字符串。

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

如果必須通過數據發送變量,該怎么辦:因為其中包含其他值?

如果您傳遞data對象,那么它將通過jQuery.param傳遞。 您可以手動執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM