【问题标题】:array to json issue using AJAX in laravel在 laravel 中使用 AJAX 的数组到 json 问题
【发布时间】:2019-08-10 01:21:27
【问题描述】:

我在 laravel 中使用 ajax 请求将数组转换为 JSON 时遇到问题。这是我的代码

AJAX 代码:

  data = {
    clients: clients,
   _token:$('input[name="_token"]').val()
  }

$.ajax({
        url: '{{URL::to('/url')}}'+'/' + trainer_id,
        type: 'POST',
        dataType: 'json',
        data: data,
        success: function (response) {
        }, error: function (response) {
        }
       });


clients 是一个数组,它有 id。它看起来像:客户: 数组[3] 0:859 1:883 2:885

Laravel 控制器代码:

public function myCode($id, Request $request) {
        dd(json_encode($request->clients));
}

代码响应为:“["859","883","885"]"。

但我想要这个:["859","883","885"]。

有人知道解决办法吗?

提前致谢!

【问题讨论】:

  • 听起来$request->clients已经是JSON了。
  • 不,它是一个数组 看起来像这样:array:3 [ 0 => "859" 1 => "883" 2 => "885" ]
  • 我添加了一个应该有效的答案。 :)
  • json_encode-ing 一个数组,不会导致字符串周围出现引号。但是 json_encode-ing 那个字符串,会。所以在某个地方,它看起来像是被双重编码了。

标签: php jquery ajax laravel


【解决方案1】:

here is the description 使用 JSON_FORCE_OBJECT

  json_encode($request->clients, JSON_FORCE_OBJECT)

【讨论】:

    【解决方案2】:

    问题就在这里:

    public function myCode($id, Request $request) {
        dd(json_encode($request->clients));  // There is no use of dd(), dd() is used for debugging purpose
    }
    

    改成:

    public function myCode($id, Request $request) {
        return response()->json($request->clients);  // We have to return this data as json that's why we use json() here
    }
    

    编辑:要发送更多数据,请创建一个数组并将$request->clients 传递给它的一个键并返回该数组,如:

    return response()->json($your_array);
    

    【讨论】:

    • 是的,我可以这样做,但我想在一个 json 中传递客户,所以我不能这样做
    • 我没有得到你?
    • 这不是我最后一次发送的回复。我还需要传递其他数据作为响应,我正在使用 guzzle,所以我像这样传递它: $requestOptions = ['form_params' => [ "trainer_id"=> $param, "client_ids" => $clientArr ]]; .那么,我该如何使用 response()->json() 呢?
    【解决方案3】:
    public function myCode($id, Request $request) {
        return response()->json($request->clients);
    }
    

    【讨论】:

      【解决方案4】:

      在javascript成功回调中

      JSON.parse("["859","883","885"]") = [859,883,885];
      
      JSON.parse(response); // in your case
      

      【讨论】:

        【解决方案5】:

        json_encode() 返回字符串。只需使用dd($request->clients);

        【讨论】:

          【解决方案6】:

          改成

          public function myCode($id, Request $request) {
                return response()->json($request->clients);
          }
          

          你也可以发送额外的参数

          public function myCode($id, Request $request) {
                return response()->json(['data'=>$request->clients,'status'=>true]);
          }
          

          【讨论】:

          • 它返回一个数组,我想要它在 json 中
          猜你喜欢
          • 2013-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-08
          • 1970-01-01
          • 1970-01-01
          • 2017-11-20
          • 1970-01-01
          相关资源
          最近更新 更多