无法从 AJAX 请求到 Laravel 控制器获取数据并使用它?

Unable to get the the data from AJAX request to Laravel controller and work with it?

我正在进行以下 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');
});

我的控制器是:

public function store(Request $request)
{
    dd($request->all());
}

但是我得到的是空数组 []。如何访问 imgBase64 数据并在控制器中使用它?

我没有提交表单来提出 post 请求我只是在使用 canvas 数据。

它对您不起作用的原因是 Laravel 使用请求的 Content-Type header 来确定如何解析输入数据。

如果您在请求中指定 contentType: false,则您是专门构建 AJAX 请求,不会发送 Content-Type header。

那样Laravel不知道如何解析请求的body。

因此,要解决您的问题,您必须为您的请求指定正确的 contentType。 jQuery 的 $.ajax() 函数的默认值是 application/x-www-form-urlencoded; charset=UTF-8(参见 documentation