2013-09-03 2 views
2

Пользователь имеет возможность выбора из флажков. Я хочу установить флажок как массив через jquery, а затем перейти к php через ajax. Кажется, я не могу получить массив и процесс. Я видел другие ответы на SO, но никто, похоже, не работает.Передача нескольких флажков на PHP через Ajax

HTML/PHP

<?php foreach ($results['buckets'] as $bucket) { ?> 
    <div><?php echo $bucket->name ?></div> 
    <input type="checkbox" name="buckets[]" id="<?php echo strtolower($bucket->name) ?>" class="buckets" value="<?php echo $bucket->id ?>" style="visibility: hidden" /><label for="<?php echo strtolower($bucket->name) ?>" class="<?php echo strtolower($bucket->name) ?>"><?php echo $bucket->name ?></label> 
<?php } ?> 

JS

$(function() { 

    $("#form").submit(function() { 

     var buckets = new Array(); 
     $("input[name='buckets[]']:checked").each(function() { 
       buckets.push($(this).val()); 
     }); 
     var valid = false; 

     $.ajax({ 

      type: "POST", 
      url: "/scripts/validateBucketSelect.php", 
      data: buckets, 
      cache: false, 
      async: false, 

      success: function(error) { 

       if (error == "null"){ 

        valid = true; 

       } else { 

        $(".errorMessage").html(error); 
       } 
      } 
     }); 

     return valid; 
    }); 
}); 

PHP

$postData = $_POST; 

if (count($postData['buckets']) < 3) { 
    echo "Oops! You have to select at least 3 buckets."; 
} elseif (count($postData['buckets']) > 5) { 
    echo "Oops! You cannot select more than 5 buckets."; 
} else { 
    echo "null"; 
} 
+1

проверил js, чтобы узнать, заполнено ли 'buckets'? проверил php, чтобы узнать, заполняется ли «POST» - небольшая отладка проходит долгий путь –

ответ

2

buckets является массивом, но вам нужно key в сценарии PHP.

Таким образом, data: buckets, должно быть data: {buckets : buckets}, то вы можете получить $_POST['buckets'].

Если вы используете data: buckets,, то $_POST - это уже данные, которые вы хотите.

Смежные вопросы