无法从 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)
我正在进行以下 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)