【问题标题】:Convert a Laravel Collection/Array to a Javascript Array将 Laravel 集合/数组转换为 Javascript 数组
【发布时间】: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 代码是什么样的?从那里调试它
  • @RoryMcCrossan 我只得到 Laravel 错误输出
  • 在这种情况下,您应该谷歌搜索错误。它导致了这个:stackoverflow.com/q/43217872/519413
  • @RoryMcCrossan 我已经更新了我的问题。

标签: javascript jquery arrays json laravel


【解决方案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;

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 2018-08-11
    • 2017-06-30
    • 2019-01-05
    • 2019-07-05
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多