为什么只有“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.只是添加,而不是将您的ID推送到数组,您可以使用
$.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; });