Quiero enviar una serie de identificadores para las casillas de verificación marcadas a través de ajax a PHP. Sigo obteniendo Undefined array key "progid" . cuando alerté al progid en jQuery obtuve las identificaciones correctas. Sé que es una pregunta duplicada, pero realmente busqué mucho y probé muchas soluciones, nada funciona.
código HTML:
while($row3 = $result3->fetch_assoc()) { $courseName = $row3['courseName']; $coursePrice = $row3['coursePrice']; $courseId = $row3['id']; $programList .= ' <div class="form-check"> <input type="checkbox" name="course[]" class="form-check-input" id="'.$courseId.'" value="'.$coursePrice.'"> <label class="form-check-label" for="'.$coursePrice.'">'.$courseName .' price is '.$coursePrice.'$</label> </div>'; } echo $programList;Código jQuery:
$('#submit').click(function() { var progid = []; $.each($("input[name='course[]']:checked"), function(){ progid.push($(this).attr("id")); }); $.ajax({ type: "POST", url: "test.php", data: progid, success: function(data){ console.log('success: ' + progid); } }); });codigo php:
<?php extract($_POST); print_r($_POST); echo ($_POST["progid"]); ?>Editar: cuando envío los datos a la misma página, funciona y muestra la matriz dentro de un lapso, pero cuando los envío a otro archivo PHP, no funciona, muestra el error.
Debido a que no publicó todo el html, ¿es posible que su evento de envío no esté deshabilitado con event.preventDefault(); y el ajax no se esta ejecutando?
$('#submit').click(function(e) { e.preventDefault(); ..https://api.jquery.com/event.preventdefault/
$.ajax({ type: "POST", url: "test.php", data: {"progid" : progid}, success: function(data) { console.log('success: ' + progid); } });Puede usar JSON.stringify() para la matriz:
$(document).ready(function () { $('#submit').click(function(e) { e.preventDefault(); var progid = []; $.each($("input[name='course[]']:checked"), function(){ progid.push($(this).attr("id")); }); let stringifyProgid = JSON.stringify(progid); $.ajax({ type: "POST", url: "test.php", data: {progid: stringifyProgid}, success: function(data){ console.log('success'); } }); }); });Y en PHP puedes obtener la matriz:
<?php $arrProgid = json_decode($_POST["progid"]); var_dump($arrProgid); ?>