将 Laravel 集合/数组转换为 Javascript 数组

Posted

技术标签:

【中文标题】将 Laravel 集合/数组转换为 Javascript 数组【英文标题】:Convert a Laravel Collection/Array to a Javascript Array 【发布时间】:2019-08-10 22:48:51 【问题描述】:

我想将 Laravel 中的一个数组分配给一个 javascript 数组。我从我的 AppServiceProvider 得到了数组,然后 json_decoded 像:

View::composer('*', function($view)

   $users = Users::all();
   $view->with(compact(users );

然后我从我的 javascript 文件中访问我的 $usersArray,例如:

  var dataSet = JSON.parse(!!$users !!);

但是我收到以下错误;

jQuery.Deferred exception: Unexpected token o in JSON at position 1 SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)

【问题讨论】:

查看页面中的实际输出。 JS 代码是什么样的?从那里调试它 Convert php array to Javascript的可能重复 @RoryMcCrossan 我只得到 Laravel 错误输出 在这种情况下,您应该谷歌搜索错误。它导致了这个:***.com/q/43217872/519413 @RoryMcCrossan 我已经更新了我的问题。 【参考方案1】:

由于您是在服务器端对其进行编码,因此您需要在客户端对其进行解码,例如:

$chequesArray = Users::all()->toJson();

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

或者也使用“base64_encode”来保存 json 格式,如:

$chequesArray = base64_encode(Users::all()->toJson());

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

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

【讨论】:

感谢您的回答。我现在收到错误“jQuery.Deferred exception: Unexpected token & in JSON at position 2 SyntaxError: Unexpected token & in JSON at position 2” 不客气,这是因为“$users”不是一个数组而是一个集合。 好的。请解释我如何将它从集合转换为数组 非常感谢扎卡里亚。有用!请解释一下刚刚发生的事情 好的。著名的。再次感谢扎卡里亚【参考方案2】:
var dataSet = @php $chequesArray @endphp;

【讨论】:

以上是关于将 Laravel 集合/数组转换为 Javascript 数组的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:将 Eloquent 集合转换为数组而不转换元素

Laravel 集合将数组转换为对象

如何将二维数组转换为集合 laravel?

Laravel - 将数组转换为雄辩的集合

如何将多维数组转换为Laravel中的集合

如何将此集合转换为 Laravel 5.2 中的数组