Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

333
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda