在 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 中上传单个文件时出现数组到字符串转换错误
将带有香草 Js 的数组从 Ajax 发送到 Laravel 控制器
如何使用 Laravel 和 Ajax 从数据库数组中检查复选框