Estoy usando la solicitud ajax para enviar el formulario de registro. Si un usuario envía un formulario en el primer intento con la información correcta, la solicitud funciona bien. Pero si el usuario cometió algún error, corrija la información y vuelva a enviarla, los datos se insertan pero en console.log(data) , me encuentro con este error:
"No coincide el token CSRF".
"\proveedor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php". Línea: 389.
cabeza.blade.php
<meta name="csrf-token" content="{{ csrf_token() }}">Vista de Mi hoja:
$(document).ready(function() { $('#send_form').click(function(e) { e.preventDefault(); /*Ajax Request Header setup*/ $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); $('#send_form').html('Sending..'); /* Submit form data using ajax*/ $.ajax({ url: "{{ route('register')}}", method: 'POST', data: $('#ajax-register-form').serialize(), success: function(response) { $('#send_form').html('Submit'); document.getElementById("ajax-register-form").reset(); }, error: function(data) { var errors = data.responseJSON; console.log(errors); $('.error-warning').show(); } }); }); });Si el usuario tiene un error en el primer intento, el token csrf debería regenerarse para que el usuario pueda enviar el formulario sin actualizar toda la página.
Elimine los encabezados de $.ajaxSetup y póngalos en una solicitud de formulario de envío como esta.
$('#send_form').html('Sending..'); /* Submit form data using ajax*/ $.ajax({ url: "{{ route('register')}}", method: 'POST', headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: $('#ajax-register-form').serialize(), success: function(response) { $('#send_form').html('Submit'); document.getElementById("ajax-register-form").reset(); }, error: function(data) { var errors = data.responseJSON; console.log(errors); $('.error-warning').show(); } }); });