Я нашел решение этой проблемы, хитрость заключается в том, чтобы использовать JSON.stringify (data) в переднем конце, и json_decode будет работать нормально.
Код переднего конца:
button id="btn">click me</button>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$('#btn').click(function () {
$x = {
"test":"hello"
};
$.ajax({
url:"/execute",
type:"POST",
contentType: 'application/json',
data:JSON.stringify($x),
success:function (data) {
console.log(data);
}
});
});
</script>
Код контроллера:
public function executeFunction(Request $request){
if($request->header()['content-type'][0] === 'application/json')
{
Log::info(json_decode($request->getContent())->test);
}
}
Если вы сбросите содержимое, это будет результатом:
object(stdClass)#423 (1) {
["test"]=>
string(5) "hello"
}