为什么只有“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;
- });