1

Estoy tratando de enviar un id que obtengo como respuesta en una fucnion ajax y en esta redirecionarlo a una ruta donde generara un PDF la funcion ajax es la siguiente

$.ajax({
    url:'guardarEgreso',
    method:'post',
    data : form,
    success:function(save){
        if(save == 'true'){
            var id_movimiento = save.id_movimiento
            Swal.fire({
                  position: 'top-end',
                  icon: 'success',
                  title: 'Ingreso de Articulos registrado Correctamente!.',
                  showConfirmButton: false,
                  timer: 1500,
                })
                setTimeout(function(){
                    window.location.href="{{route('generarPDF',['accion' => 'ingreso', 'id_movimiento' =>'id_movimiento'])}}"
                    //window.location.href="{{route('listaArticulos')}}"
                },2500)
        }else{
            Swal.fire({
                  position: 'top-end',
                  icon: 'error',
                  title: 'Fallo al registrar El ingreso de Articulos!.',
                  showConfirmButton: false,
                  timer: 1500,
                })
        }
    }
})

en la variable save al imprimir me aparecen los valores del array que mando desde el controlador que con bool = true y el id del ultimo registro almacenado

de este modo los retorno desde el controlador

$response = array(
                        'bool' => true,
                        'id_movimiento' => $last_insert_movimiento_inventario->id_movimiento,
                    );
                    
                    return $response;

pero al tratar de colocar dentro de la linea

window.location.href="{{route('generarPDF',['accion' => 'ingreso', 'id_movimiento' =>'id_movimiento'])}}"

coloque como lo coloque lo toma como una cadena de texto y el ejecutarse la otra función me da error por que no lleva uin valor numerico si no un string

2 respuestas 2

1

Creo que lo más sencillo es que devuelvas la ruta en el retorno del AJAX

$id_mov = $last_insert_movimiento_inventario->id_movimiento;
$response = array(
                   'bool' => true,
                   'id_movimiento' => $id_mov,
                   'ruta' => route('generarPDF',['accion' => 'ingreso', 'id_movimiento' => $id_mov])
                  );
                    
return $response;

Y en el JS

success:function(save){
        if(save.bool == 'true'){
            Swal.fire({
                  position: 'top-end',
                  icon: 'success',
                  title: 'Ingreso de Articulos registrado Correctamente!.',
                  showConfirmButton: false,
                  timer: 1500,
                })
                setTimeout(function(){
                    window.location.href = save.ruta; //<--esto
                },2500)
1

Prueba así, lo que hice fue mover id_movimiento fuera de las comillas para concatenar el valor de la variable id_movimiento dentro de la cadena de texto de la URL:

window.location.href="{{route('generarPDF',['accion' => 'ingreso', 'id_movimiento' => '']) }}" + id_movimiento;

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