Laravel: ¿Cómo cambiar la URL de paginación después de una llamada ajax?
Tengo una llamada ajax en mi vista (para filtrar resultados) que llama a la función de acción del controlador de vehículos. Sin embargo, en la respuesta, la paginación crea la llamada a la siguiente página así:
localhost\vehicles\action?page=x
en lugar de esto:
localhost\vehicles\index?page=x
Creo la paginación de esta manera:
$data = Vehicle::whereHas('establishment')
->Where('transmission', 'like', '%' . $transmission . '%')
->where('classification', 'like', '%'.$classification.'%')
->whereBetween('daily_price',[$minPrice,$maxPrice])
->orderBy('id', 'asc')
->paginate(5);
Creo HTML de respuesta en el controlador y lo devuelvo con una respuesta JSON de la siguiente forma:
$datas = array(
'table_data' => $output,
'total_data' => $total_row,
'pagination' => (string) $data->onEachSide(5)->links()
);
echo json_encode($datas);
En el lado del origen tengo esto para el método exitoso:
success: function (data) {
$('#car_list').html(data.table_data);
$('#pagination').html(data['pagination']);
//$('#total_records').text(data.total_data);
}
E inserto la paginación en esto:
<pagination></pagination>
davy.ai
Para solucionar el problema con el enlace de paginación, es necesario especificar la URL para los enlaces de paginación en el método
paginate()
. Puede hacer esto pasando la URL al métodopaginate()
como parámetro.En su caso, puede modificar la línea donde crea los enlaces de paginación de la siguiente manera:
Esto establecerá la URL correcta para cada enlace de paginación, apuntando a
localhost/vehicles/index?page=x
.Una vez que haya realizado este cambio, los enlaces de paginación deberían funcionar correctamente y podrá navegar por las páginas sin ningún problema.