Autocomplete con Ajax

Primero tener en el header y el footer añadido los CDN de los CSS y JS de  JQueryui.

En una view tenemos:
<label>Película</label>
<input type="hidden" name="id_pelicula" id="id_pelicula" value="0">
<input type="text" name="labelPelicula" id="labelPelicula" nameId="id_pelicula" class="form-control soyPelicula" style="width:100%;">

En una nuestro footer.blade.php ponemos:
@include("ajax_lsg");

En ajax_lsg.blade.php:
$(".soyPelicula").autocomplete({
minLength : 2, // debe escribir 2 caracteres como mínimo
source : function(request, response) {
$.ajax({
type: "POST",
url : "{{ route('ajaxRequestPost') }}",
dataType : "json",
data : {
tabla: "peliculas",
buscar: request.term,
maxRows: 10
},
success : function(data) {
// console.log("DATOS ARRAY:");
// console.log(data);

response($.map(data, function(item) {
return {
label : item.tit_pelicula,
value: item.id
}
}));
}
});
},
select : function(event, ui) {
idAux = $(this).attr("nameId");
labelAux = $(this).attr("name");
console.log(idAux+" "+labelAux);
$("#"+idAux).val(ui.item.value);
$("#"+labelAux).val(ui.item.label);
return false;
},
open : function() {
},
close : function() {
}
});

En routes/web.php:
Route::get('ajaxRequest', 'AjaxController@ajaxRequest')->name('ajaxRequest');
Route::post('ajaxRequest', 'AjaxController@ajaxRequestPost')->name('ajaxRequestPost');

En AjaxController:
// ****************************************
// ****************************************
public function get_peliculas_ac($buscar) {
$arrPel = DB::table('peliculas')
->select('peliculas.id', 'peliculas.titulo', 'peliculas.anno')
->where('titulo', 'like', '%'.$buscar.'%')
->orderby('titulo')
->get();

$newArr = array();
foreach ($arrPel as $clave=>$valor) {
$datos = array();
$datos["id"] = $valor->id;
$datos["tit_pelicula"] = $valor->titulo." (".$valor->anno.")";
$newArr[] = $datos;
}
$salida = json_encode($newArr);
echo $salida;
}

// ****************************************
// ****************************************
public function ajaxRequestPost()  {
if ($_POST["tabla"] == "peliculas") {
echo $this->get_peliculas_ac($_POST["buscar"]);
}
if ($_POST["tabla"] == "cineastas") {
echo $this->get_cineastas_ac($_POST["buscar"]);
}
}

No hay comentarios:

Publicar un comentario