Estoy obteniendo una solicitud usando AJAX. En mi controlador Laravel, traté de usar "->paginate(5);" y obtuve valores indefinidos pero cuando uso "->get();" funciona perfectamente, pero quería usar paginate para tener paginación en mi tabla. Creo que hay un problema sobre cómo saco los valores. Obtener devolver un objeto y paginar devolver una matriz según el registro en la consola. Estoy usando este "$.each(response.data, function (key, item)" para generar los valores. Por favor ayuda.
este es mi controlador
public function getOrders($store_id) { $data = DB::table('stores') ->where('stores.id',$store_id) ->paginate(5); return response()->json(['data' => $data]); }
Este es mi AJAX
function fetchOrder(){ $.ajax({ type: "GET", url: "/get-orders/"+store_id, dataType: "json", success: function (response) { if (response.data != null) { console.log(response); $('.OrderTbody').html(""); $.each(response.data, function (key, item) { $('.OrderTbody').append('<tr><td>' + item.store_name + '</td></tr>'); }); } } }); }
Esta es una salida de ejemplo usando paginar
Esta es la respuesta en la consola usando get que está funcionando
Object data: current_page: 1 data: [{…}] first_page_url: "http://127.0.0.1:8000/get-orders/2?page=1" from: 1 last_page: 1 last_page_url: "http://127.0.0.1:8000/get-orders/2?page=1" links: (3) [{…}, {…}, {…}] next_page_url: null path: "http://127.0.0.1:8000/get-orders/2" per_page: 15 prev_page_url: null to: 1 total: 1 [[Prototype]]: Object [[Prototype]]: Object
y esta es la respuesta en la consola usando paginar que NO FUNCIONA
{data: Array(1)} data: Array(1) 0: address: "Cubao, Quezon City, Metro Manila, Philippines" approval: 1 close_time: "20:24:00" created_at: "2022-03-21 12:22:18" id: 2 lat: "14.6177663" lng: "121.0571541" open_time: "20:23:00" profile_image: "support-1store-prof_image1647868469.jpg" status: 1 store_name: "Kainan" store_users_id: 3 updated_at: "2022-03-21 13:14:29" zipcode: "3112" [[Prototype]]: Object length: 1 [[Prototype]]: Array(0) [[Prototype]]: Object
Usar
$.each(response.data.data, function (key, item) { $('.OrderTbody').append('<tr><td>' + item.store_name + '</td></tr>'); });
intente importar sus datos de esta manera:
$data = DB::table('stores') ->where('stores.id',$store_id) ->paginate(5) ->toArray();
agregar ->toArray()
simplificará sus objetos para que la serialización JSON sea más "fácil" para Laravel.