Estoy haciendo una validación simple en mi controlador Laravel:
public function updateInfo(Request $request) { $validator = $request->validate([ "name" => ["string", "nullable"], "email" => ["email", "nullable"], "currentPassword" => ["password:api"] ]); return json_encode($validator); } Mi problema es que esta validación me redirige a la casa si falla, y estoy haciendo la solicitud vía AJAX, sé que Laravel detecta cuando una solicitud es vía Ajax, pero solo funciona si es una solicitud normal (la típica solicitud en que envío los encabezados con la Content Type application/json y en el cuerpo envié un JSON normal
Pero Laravel no puede detectar cuando la solicitud de Ajax no es de Content Type application/json , estoy usando el objeto FormData() de JavaScript, por lo tanto, no envié el encabezado Content Type application/json , y en el body envié el objeto FormData.
Creo que simula una solicitud HTTP típica recargando la página, y por esa razón Laravel no puede detectarlo, pero me da problemas con la respuesta ajax porque Laravel responde la redirección y en mi respuesta Ajax estoy capturando el código HTML de la página de inicio.
¿Que puedo hacer?
Puede usar la función de ayuda validator() con el método de validate() que lo ayudará con las llamadas AJAX y las llamadas normales
validator($request->all(), [ "name" => ["string", "nullable"], "email" => ["email", "nullable"], "currentPassword" => ["password:api"] ])->validate();