json_decode返回null - laravel

时间:2018-05-11 15:17:15

标签: php laravel

我使用ajax调用从前端发送json对象,如下所示:

<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 () {
    $.ajax({
        url:"/execute",
        type:"POST",
        contentType: 'json',
        data:{
            "test":"hello"
        },
        success:function (data) {
            console.log(data.status);
        }
    });


});
</script>

我希望在laravel中解码这个json对象,这是我的控制器代码:

public function executeFunction(Request $request){

          if($request->header()['content-type'][0] === 'json')
          {

              Log::info(json_decode($request->getContent(),true));

          }
          return response()->json(["status"=>"success"]);

}

json_decode在这里返回null,可能是什么问题?感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法,诀窍是在前端使用JSON.stringify(数据),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"
}