0

tengo una vista donde muestro una lista con varios checkbox. al darle clic a un checkbox coge el ID de la columna y lo guarda en un array de la siguiente manera:

        $('.columnCheckbox').click(function () {
    // Obtén el valor del atributo 'data-valor' del checkbox
    const valor = $(this).data('valor');
      
    if (this.checked) {
      // Agrega el valor a la lista si el checkbox está marcado
      pedidosSeleccionados.push(valor);
    } else {
      // Elimina el valor de la lista si el checkbox está desmarcado
      const index = pedidosSeleccionados.indexOf(valor);
      if (index > -1) {
        pedidosSeleccionados.splice(index, 1);
      }
    }
    
    
  });
});

Quiero que al darle clic a un botón, se envié el array a un controller y luego este controller envié el mismo array a otra vista, algo asi:

Boton para enviar datos:

                <button type="button" class="btn btn-primary d-inline-block mr-2" id="btnEnviar" >
                Ver consolidado
            </button>

Ahora la funcion de btnEnviar (aca es donde no me funciona mandar la lista hacia el controller):

  $('#btnEnviar').click(function() {

    $.ajax({
        url: '{{ route("consolidadoCierre") }}',
        type: 'POST',
        data: pedidosSeleccionados,
        contentType: 'application/json',
        dataType: 'json',
        success: function (response) {
            // Manejar la respuesta del controlador aquí
        },
        error: function (error) {
            console.log("Error en la solicitud AJAX");
            console.log(error);
        }
    });


   
            //Ir a la ruta deseada
    $(document).ready(function () {
        $('#btnEnviar').click(function () {
            // Redirigir al usuario a la ruta deseada
            window.location.href = '/cierreconsolidado';
        });
    });



});

Y ya este es el controller en donde quiero recibir la lista y enviarla a otra vista para alli usarla

  public function consolidadoCierre(Request $request){

    $pedidosSeleccionados = $request->input('pedidosSeleccionados');

   

    return view('cierres.cierreConsolidado', compact('pedidosSeleccionados'));
}

Muchas gracias !

1 respuesta 1

0

Podrías tener algo asi

<form id="frmValues" action="/ruta" method="post">
<input type="hidden" name="values" id="values"/>
</form>

cuando presiones en el boton enviar, le insertas los datos del array a tu form

//primero validas que el array no vaya vacio y luego insertas los valores en el input hidden
$("#values").val(JSON.stringify(myArray));
$("#frmValues").submit();

y en tu controlador

  public function consolidadoCierre(Request $request){

    $pedidosSeleccionados = json_decode($request->values));
    return view('cierres.cierreConsolidado', compact('pedidosSeleccionados'));
}

esta es una forma que se podría hacer

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.