Вот моя проблема, может быть, глупая проблема, но я действительно не вижу, что не так.
В laravel выполняется почтовый запрос ajax, и данные отправляются на сервер (поскольку он отображается на вкладке сети браузера).
Но на стороне сервера, поскольку я запрашиваю запрос, доступ к данным невозможен (кажется, что они даже не включены в запрос).
Запрос ajax находится в другом почтовом запросе в случае успеха (если это имеет значение).
Запрос
var projectid='21';
var data = [{'project' : projectid, 'fileName' : response.fileName}];
json = JSON.stringify (data);
console.info(json);
$.ajax({
method :'POST',
url:'/mtdir',
data: json,
cache: false,
processData:false,
contentType: false,
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
}
});
Контроллер
public function mtdir(Request $request) {
dd($request);
//$ProjectID=$request->input('ProjectID');
//$ProjectID=$_GET['ProjectID'];
$fileName = $request->get("fileName");
$fileName = $_REQUEST ["fileName"];
}
Я уже пытался отформатировать свои данные с помощью JSON.stringify
data = {'project' : projectid, 'fileName' : response.fileName}
или
data = [{'project' : projectid, 'fileName' : response.fileName}]
Если отправлено только как объект {'project': projectid, 'fileName': response.fileName}, вкладка сети браузера извлекает только [object Object].
Спасибо за помощь ! :)






попробуйте удалить
processData:false,
contentType: false,
в вашем запросе ajax. вы можете проверить, что с входными данными что-то не так, выполнив
var_dump("php://input");
Спасибо. Похоже, что processData: false, contentType: false вызывали мою проблему. Я даже не думал об их удалении, потому что обычно с этим работает. Есть идеи, почему?
Обычно вы используете их при использовании formData (лучшее решение для загрузки файлов).
Попробуйте отправить токен CSRF в теле запроса как
_csrfвместо заголовка.