unknown form error csrftoken ajax forms laravel-5

ajax - form - meta csrf token



Laravel ajax 422 Entidad no procesable incluso cuando el token está haciendo coincidir (1)

No creo que el token csrf sea el problema aquí. Si fuera, obtendrías TokenMissmatchException y no Entidad no procesable. ¿Tiene un validador de solicitud en su controlador de esta manera?

$validator = Validator::make($request->all(), [ ''username'' => ''required|max:30|min:6|unique:users'', ''email'' => ''required|email|max:50|unique:users'', ''password'' => ''required|confirmed|min:6'', ]);

Si es así, quizás puedas hacer algo como esto:

if ($validator->fails()) { if($request->ajax()) { return response()->json(array( ''success'' => false, ''message'' => ''There are incorect values in the form!'', ''errors'' => $validator->getMessageBag()->toArray() ), 422); } $this->throwValidationException( $request, $validator ); }

Después de eso, puede detectar errores de validación en su manejador de errores ajax como este:

$(''.keywords-plan-form'').submit(function(event) { event.preventDefault(); $.ajax({ url: ''/laravel/public/keywordsplans'', type: ''POST'', data: $(this).serialize(), success: function(data){ alert(data); // success logic }, error: function(jqXhr, json, errorThrown){// this are default for ajax errors var errors = jqXhr.responseJSON; var errorsHtml = ''''; $.each(errors[''errors''], function (index, value) { errorsHtml += ''<ul class="list-group"><li class="list-group-item alert alert-danger">'' + value + ''</li></ul>''; }); //I use SweetAlert2 for this swal({ title: "Error " + jqXhr.status + '': '' + errorThrown,// this will output "Error 422: Unprocessable Entity" html: errorsHtml, width: ''auto'', confirmButtonText: ''Try again'', cancelButtonText: ''Cancel'', confirmButtonClass: ''btn'', cancelButtonClass: ''cancel-class'', showCancelButton: true, closeOnConfirm: true, closeOnCancel: true, type: ''error'' }, function(isConfirm) { if (isConfirm) { $(''#openModal'').click();//this is when the form is in a modal } }); } }); });

Y vea los mensajes en el mensaje modal

Recibo el error 422 Error de entidad no procesable incluso cuando envío mi formulario a través de Ajax.

Mi archivo javascript

$.ajaxSetup({ headers: { ''X-XSRF-TOKEN'': $(''meta[name="csrf-token"]'').attr(''content'') } }); $(''.keywords-plan-form'').submit(function(event) { event.preventDefault(); $.ajax({ url: ''/laravel/public/keywordsplans'', type: ''POST'', data: $(this).serialize(), success: function(data){ alert(data); // success logic }, error: function(data){ // Error... var errors = $.parseJSON(data.responseText); console.log(errors); $.each(errors, function(index, value) { }); } }); });

como puedes ver, agregué X-XSRF-TOKEN **** texto fuerte al encabezado ajax.

Esta es mi '''' etiqueta

<meta name="csrf-token" content="{{ csrf_token() }}">

mis datos de formulario en debuger de cromo

_token:5j6DGhhTytbIRB1GrW9Wml9XrOxmKjgE9RiGa4Gf date: keyword[0]:Lorem ipsum keyword[1]:Is dolor amet keyword[2]:plumber tampa

Encabezados de solicitud

X-XSRF-TOKEN:5j6DGhhTytbIRB1GrW9Wml9XrOxmKjgE9RiGa4Gf .....

¿Estoy haciendo algo mal u olvidando algo?