Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

334
Vistas
JS Obtener registro único del controlador Laravel

Trabajo en laravel y trato de obtener la respuesta de la página. Este es el controlador en cuestión:

 public function counter($id) { $toSearch = $id * 10000; $latest = User::where('counter', '>=', $toSearch)->get()->last(); $res = $latest['counter'] % $toSearch; return $res; }

Como puede ver, el resultado que devolvió el controlador es un registro único y estoy desesperado por obtener ese registro en el archivo Java Script en un archivo separado de mi vista Blade. No quiero acceder a la base de datos de JS y solo intentar obtener ese único registro.

Esta es la función que se encarga de devolver el resultado:

 function counter(id) { let data; // Please Help Me Here return data; }

El valor devuelto por esta función se utilizará para otra función.

La forma en que funciona el algoritmo es llamar a la función de contador desde el archivo JS, cuyo resultado será manejado por el controlador mediante el uso de búsqueda o cualquier cosa.

Nota: el resultado debe ser un número entero <- tal vez haya otra cosa que hacer para convertirlo a número entero/número.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Veo 2 opciones para resolver tu problema:

1. Envíe la variable a la plantilla de hoja y luego con js recupérela.

2. Realice una solicitud ajax para recuperar los datos, debe crear una ruta separada, de modo que la ruta solo devuelva el resultado a través de JSON.

Ambas variantes tienen sus pros y sus contras. Para alguien es más fácil segundo, para el primero. Intentaré escribir ambos a continuación:

1. Envío de datos a Blade : para este, necesita saber dónde se usará ese counter , si intenta usarlo globalmente, entonces puede adjuntarlo al body o al footer/header de la siguiente manera:

 <body data-counter="{{App\Http\Models\User::calculateCounter($user_id)}}">

es solo un ejemplo, su código real podría ser diferente. Para el código anterior, debe crear una función estática pública en el modelo de usuario y colocar su código allí en el modelo. También debe pasar la variable $user_id y recibirla en el modelo de usuario. O puede usar el archivo del controlador para lograrlo, aunque el resultado sería el mismo ($user_id necesita enviar).

Luego, en la función de su archivo js:

 function counter() { return parseInt(document.body.dataset.counter); }

2. Solicitud de Ajax : es posible que tenga un problema de espera asincrónica, en caso afirmativo, intente obtener más información sobre "devolver la respuesta asíncrona XMLHTTPRequest". Puede ser complicado. En tu función js:

 function counter(id){ const xhttp = new XMLHttpRequest(); xhttp.open("GET", `/getCounterOfUser/${id}`); xhttp.addEventListener('load', function (event) { if (event.target.responseText && event.target.status == 200) { return parseInt(JSON.parse(event.target.responseText)); } else { return 0; } }); xhttp.addEventListener(' error', function (event) { // Define what happens in case of error }); xhttp.send(); }

Y necesitas crear una nueva ruta:

 Route::get('/getCounterOfUser/{id}', [App\Http\Controllers\Your_Controller::class, 'counter'])

También debe devolver JSON en la función de su controlador:

 public function counter($id) { $toSearch = $id * 10000; $latest = User::where('counter', '>=', $toSearch)->get()->last(); $res = $latest->counter % $toSearch; return response()->json($res); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda