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

431
Vistas
El error de validación de Laravel no regresa como respuesta json

Cuando trato de detectar mis errores de validación de Laravel usando javascript, me sigue dando los datos en formato html en lugar de en formato json, mi validación parece normal. tenga en cuenta que estoy usando vue.js 3 y si la validación pasa el método real en el controlador funciona bien, esto es solo un problema de captura de validación.

 $request->validate([ 'first_name' => ['required', 'string', 'min:3', 'max:255'], 'last_name' => ['required', 'string', 'min:3', 'max:255'], 'email' => ['required', 'email', 'min:3', 'max:255'], 'message' => ['required', 'string', 'min:3'] ]);

mi método de búsqueda es el siguiente:

 fetch('/contact-us', { method: 'POST', headers: { 'CONTENT-TYPE': 'application/json' }, body: JSON.stringify(this.form) }).then((response) => response.text()) .then((data) => { console.log(data); //data = JSON.parse(data); }).catch(function(error) { console.log('Error: ' + error); });

mi ruta web es:

 Route::post('/contact-us', [IndexController::class, 'contactForm']);

el error en formato html es:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link href="/css/app.css" rel="stylesheet" /> <script src="/js/app.js" defer></script> </head> <body> <style> body{ margin: 0 !important; overflow-x: hidden; } .container { padding-top: 20px; } </style> <div id="app" data-page="{&quot;component&quot;:&quot;ContactUs&quot;,&quot;props&quot;:{&quot;errors&quot;:{&quot;email&quot;:&quot;The email must be a valid email address.&quot;},&quot;csrf&quot;:&quot;tFYwkcZZhNfeb2WXDwdnSv4dchujDvSvLfFGhHW1&quot;},&quot;url&quot;:&quot;\/contact-us&quot;,&quot;version&quot;:&quot;0f4e2ee0f7e2ca9da665d2f8035743df&quot;}"></div></body>
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Los días de la documentación de laravel, la respuesta recibe un 422 que arroja un error en el bloque de captura de errores habitual. Estos datos se pueden extraer agregando este error de captura a su solicitud de publicación json

 .catch(error => { if (error.response.data.errors) { console.log(error.response.data.errors); } });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si la validación falla durante una solicitud HTTP tradicional, se generará una respuesta de redireccionamiento a la URL anterior.

Si la solicitud entrante es una solicitud XHR, se devolverá una respuesta JSON que contiene los mensajes de error de validación.

Primero, supongo que /contact-us es una ruta web y no una ruta API.

El comportamiento predeterminado de $request->validate() en caso de falla es redirigirte a la ruta web anterior con MessageBag .

Para evitar ese comportamiento predeterminado, debe envolver el proceso de validación en un bloque try-catch y capturar la excepción Illuminate\Validation\ValidationException y devolver mensajes de error de [IndexController::class, 'contactForm'] .

La matriz de mensajes de error se convertirá automáticamente en una respuesta JSON.

 try { $request->validate([ 'first_name' => ['required', 'string', 'min:3', 'max:255'], 'last_name' => ['required', 'string', 'min:3', 'max:255'], 'email' => ['required', 'email', 'min:3', 'max:255'], 'message' => ['required', 'string', 'min:3'] ]); } catch (\Illuminate\Validation\ValidationException $th) { return $th->validator->errors(); }

Ejemplo de respuesta:

 { "first_name": [ "first name field is required." ], "last_name": [ "last name field is required." ], "email": [ "L'E-mail field is required." ], "message": [ "message field is required." ] }
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