hola chicos, tengo un problema cuando selecciono más de una casilla de verificación desde la que serializar no los pone en una matriz aquí está el resultado
categoría-producto=29&categoría-producto=27
y quiero que sea asi
categoría-producto=29,27
este es mi codigo php:
<form id="myform"> <fieldset> <label>Categorys</label> <?php $cats = get_terms([ 'taxonomy' => 'product_cat', 'hide_empty' => false, ]); ?> <?php foreach($cats as $cat) : ?> <input type="checkbox" id="product-category-checkbox" name="product-category" value="<?php echo $cat->term_id; ?>"> <?php endforeach; ?> </fieldset> </form>y este es el codigo js:
<script> (function($){ $(document).ready(function(){ $(document).on('submit', '#myform', function(e) { e.preventDefault(); var data = $(this).serialize(); console.log(data); var settings = { "url": "<?php echo WC_AJAX::get_endpoint( 'kia_search' ) ?>", "method": "POST", "data": data } $.ajax(settings).done(function (response) { $('.products').html(response); }); }); }); })(jQuery); </script>En lugar de serializar los datos directamente a través .serialize() , debe usar .serializeArray() para obtener los datos como una matriz. Puede manipular la matriz y luego serializarla con $.param() .
Así que elimine la línea de abajo y hágala más dinámica.
var data = $(this).serialize();Al igual que. Esto es para garantizar que, incluso si se agregan más elementos de formulario más adelante, no habrá necesidad de modificar el código.
<script> (function($){ $(document).ready(function(){ $(document).on('submit', '#myform', function(e) { e.preventDefault(); // get data var data = $(this).serializeArray(); // get 'product-category` values from array and join them var categories = data.filter(obj => obj.name === 'product-category').map(obj => obj.value).join(','); // add the joined 'product-category' back to data if( categories.length > 0 ){ data = data.filter(obj => obj.name !== 'product-category') .concat({name: 'product-category', value: categories}); } // serialize data data = $.param(data); console.log(data); var settings = { "url": "<?php echo WC_AJAX::get_endpoint( 'kia_search' ) ?>", "method": "POST", "data": data } $.ajax(settings).done(function (response) { $('.products').html(response); }); }); }); })(jQuery); </script>