Estoy tratando de enviar un formulario en laravel usando ajax, que tiene algunos tipos de entrada y la opción de cargar archivos. Después de enviar un formulario, recibí un error:
{message: "CSRF token mismatch.", exception: "Symfony\Component\HttpKernel\Exception\HttpException",…}exception: "Symfony\Component\HttpKernel\Exception\HttpException"file: "D:\development\laravel\parangatcrm\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php"line: 389message: "CSRF token mismatch." I have added this in my blade file - <meta name="csrf-token" content="{{ csrf_token() }}"> <input type="hidden" name="csrf-token" value="{{ csrf_token() }}"> This is my ajax code - $.ajax({ url: url, type: 'PATCH', data: new FormData($("#formId")[0]), cache : false, processData: false, contentType: false, success: function (res){ console.log(res); } ,error: function (err){ console.log(err); } });Debe enviar el token csrf en el encabezado, no con los datos del formulario. intente algo como esto en su código:
Para agregar un encabezado predeterminado con cada solicitud, use $.ajaxSetup():
$.ajaxSetup({ headers: { 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') } });o bien, puede agregar el encabezado como el siguiente código:
$.ajax({ url: url, headers: { 'X-CSRF-Token': ('meta[name="csrf-token"]').attr('content') } type: 'PATCH', data: new FormData($("#formId")[0]), cache : false, processData: false, contentType: false, success: function (res){ console.log(res); } ,error: function (err){ console.log(err); } });