json_decode возвращает ноль - laravel - PullRequest
0 голосов
/ 11 мая 2018

Я отправляю объект json из внешнего интерфейса с помощью вызова ajax следующим образом:

<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>

и я хочу декодировать этот объект json в laravel, вот мой код контроллера:

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 возвращает здесь ноль, в чем может быть проблема?Спасибо.

1 Ответ

0 голосов
/ 11 мая 2018

Я нашел решение этой проблемы, хитрость заключается в том, чтобы использовать 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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...