在 laravel 中使用 AJAX 的数组到 json 问题

Posted

技术标签:

【中文标题】在 laravel 中使用 AJAX 的数组到 json 问题【英文标题】:array to json issue using AJAX in laravel 【发布时间】: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 那个字符串,会。所以在某个地方,它看起来像是被双重编码了。 【参考方案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 中

以上是关于在 laravel 中使用 AJAX 的数组到 json 问题的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 AJAX 在 Laravel 中上传单个文件时出现数组到字符串转换错误

如何在 laravel 5.3 中使用 ajax

将带有香草 Js 的数组从 Ajax 发送到 Laravel 控制器

如何使用 Laravel 和 Ajax 从数据库数组中检查复选框

通过 Ajax 调用将数组发送到控制器,然后控制器在 Laravel 中返​​回具有该数组的另一个视图

在 Laravel 6 中使用 PUT 方法 AJAX 会导致空的 $request->all() 数组