首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Laravel Collection/Array转换为Javascript Array

将Laravel Collection/Array转换为Javascript Array
EN

Stack Overflow用户
提问于 2019-03-20 09:27:43
回答 2查看 2K关注 0票数 3

我想将一个数组从Laravel分配给一个JavaScript数组。我从我的AppServiceProvider和json_decoded中得到了数组,就像:

代码语言:javascript
复制
View::composer('*', function($view)
{
   $users = Users::all();
   $view->with(compact(users );
}

然后,我从javascript文件访问我的$usersArray,如下所示:

代码语言:javascript
复制
  var dataSet = JSON.parse({!!$users !!});

然而,我得到了以下错误;

代码语言:javascript
复制
jQuery.Deferred exception: Unexpected token o in JSON at position 1 SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-20 09:35:42

由于您是在服务器端对其进行编码,所以需要在客户端对其进行解码,如下所示:

代码语言:javascript
复制
$chequesArray = Users::all()->toJson();

var dataSet = JSON.parse({!!json_encode($chequesArray)!!});

也可以使用"base64_encode“来保存json格式,如:

代码语言:javascript
复制
$chequesArray = base64_encode(Users::all()->toJson());

var dataSet = JSON.parse(atob('{{$chequesArray}}');

主要的区别来自于使用{{ }} vs {!! !!},第一种是转义特殊字符,因此它会将引号""转换为&quot;,然后JS将无法解析字符串(这就是为什么我们可以使用`base64_encode来保存格式),第二种方法将保存格式并允许引号使JS部分能够简单地解析它。

票数 7
EN

Stack Overflow用户

发布于 2019-03-20 09:29:29

代码语言:javascript
复制
var dataSet = @php $chequesArray @endphp;
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55257436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档