Estoy haciendo la siguiente llamada AJAX:
var dataURL = canvas.toDataURL(); var token = "{{ csrf_token() }}"; $.ajax({ type: "POST", url: "{{route('site.image.store')}}", data: { imgBase64: dataURL, }, processData: false, contentType: false, headers: {'X-CSRF-TOKEN': token}, }).done(function(response) { console.log('done'); });Y mi controlador es:
public function store(Request $request) { dd($request->all()); } Sin embargo, obtengo una matriz vacía [] . ¿Cómo puedo acceder a los datos de imgBase64 y trabajar con ellos en el controlador?
No estoy enviando un formulario para realizar la solicitud de publicación, solo estoy usando los datos del lienzo.
La razón por la que no funciona para usted es que Laravel usa el encabezado Content-Type de la solicitud para determinar cómo analizar los datos de entrada.
Si especifica contentType: false en su solicitud, está creando específicamente la solicitud AJAX de tal manera que no se enviará ningún encabezado Content-Type .
De esa forma, Laravel no sabe cómo analizar el cuerpo de la solicitud.
Entonces, para resolver su problema, debe especificar el tipo de contentType correcto para su solicitud. El valor predeterminado para la función $.ajax() de jQuery es application/x-www-form-urlencoded; charset=UTF-8 (ver documentación )