Опубликовать массив из нескольких значений флажка

Почему только одно значение массива значений флажка «db» отправляется на скрипт на стороне сервера?

Jquery:

$(".db").live("change", function() { $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); var url = "myurl.php"; var db = []; $.each($('.db:checked'), function() { db.push($(this).val()); }); if(db.length == 0) { db = "none"; } $.post(url, {db: db}, function(response) { $("#dbdisplay").html(response); }); return true; }); 

HTML:

 <input type="checkbox" name="db[]" class="db" value="track"/><label for="track">track</label></br> <input type="checkbox" name="db[]" class="db" value="gps"/><label for="gps">gps</label></br> <input type="checkbox" name="db[]" class="db" value="accounting"/><label for="accounting">accounting</label></br> 

Редактирование : я в конечном итоге ответил на свой вопрос, но есть ли у кого-нибудь документация (или объяснение), почему это необходимо? Мне было трудно найти точный ответ (таким образом, посмертный пост).

Я согласен с @jjclarkson. Просто добавьте вместо того, чтобы подталкивать ваши идентификаторы к массиву, вы можете использовать $ .map :

 $(".db").live("change", function() { $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); var url = "myurl.php"; var db = $('.db:checked').map(function(i,n) { return $(n).val(); }).get(); //get converts it to an array if(db.length == 0) { db = "none"; } $.post(url, {'db[]': db}, function(response) { $("#dbdisplay").html(response); }); return true; }); 
 var checkeditems = $('input:checkbox[name="review[]"]:checked') .map(function() { return $(this).val() }) .get() .join(","); $.ajax({ type: "POST", url: "/index.php/openItems/", data: "ids=" + checkeditems, success: function(msg) { $(".mainContainer").html(msg); } }); 

Вам нужно, чтобы квадратные скобки указывали массив [] на имя переданной переменной.

 {'db[]': db} $(".db").live("change", function() { $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); var url = "myurl.php"; var db = []; $.each($('.db:checked'), function() { db.push($(this).val()); }); if(db.length == 0) { db = "none"; } $.post(url, {'db[]': db}, function(response) { $("#dbdisplay").html(response); }); return true; }); 

$('input[name="mycheckboxes"]:checked').map(function(){ return $(this).val(); }).get().join(",");

затем взорваться в PHP $mycheckboxes = explode(',',$_GET['mycheckboxes']);