capturar mas de 1 valor con ajax y laravel 5

publicado por: Anonymous

Tengo en mi vista dos select con datos, los cuales quiero capturar sus values. Puedo hacerlo con un select y el metodo $.get, pero no sé como hacerlo para que me capture dos datos y llevarlo a un controlador.

No sé si se entiende mi problema, pero dejo lo que tengo para capturar un solo dato.

Ruta:

Route::get('imp/{id}', '[email protected]');

Controlador:

public function getIva(Request $request, $id)
{

    //$test = M_DCVT::where('id' , '=' , $id)->select('mimpcd_id')->first();
    //$test = $test->mimpcd_id;


    if($request->ajax()){

        //$imp = M_IMPT::Iva($id, foo);
        //return response()->json($imp->mimpts);


    }   

}

Script:

$("#mdccod_id").change(function(event){

    var select = $('#msocod_id option:selected').val(); 

    $.get("/imp/"+event.target.value+"",function(response){          
      $("#hidden").val(response)
    });
});

solución

Asumiendo entonces que tenemos dos select:

<select id="mdccod_id">
  <option value="1">valor1</option>
  <option value="2">valor2</option>
</select>

<select id="msocod_id">
  <option value="1">valor1</option>
  <option value="2">valor2</option>
</select>

Y que vamos a capturar el evento de cambio (según lo que respondes en los comentarios) en solo uno de los dos select, para lo cual vamos a mantener el get que se está utilizando:

$("#mdccod_id").change(function(event){

  var select = $('#mdccod_id option:selected').val(); 
  var select2 = $('#msocod_id option:selected').val(); 

  $.get("/imp/" + select + "/" + select2 ,function(response){          
    $("#hidden").val(response)
  });
});

La anterior es una solución bastante “manual” la cuál se podría mejorar dependiendo de como tengas proyectada la aplicación y también ponerle algún valor por defecto en caso que no haya nada en los valores que toma de los select.

A continuación modificamos la ruta en Laravel para que pueda recibir los dos parámetros, los cuales haremos obligatorios:

Route::get('imp/{id}/{valor2}', '[email protected]');

Por último, simplemente agregamos el parámetro adicional al método del controlador:

public function getIva(Request $request, $id, $valor2)
{

    if($request->ajax()){
        // hacer lo que quieras con $id
        // hacer lo que quieras con $valor2
    }   

}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *