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

ger*_*rry 1 javascript arrays jquery json laravel

我想将Laravel的数组分配给JavaScript数组。我已经从我的数组AppServiceProvider和json_decoded它像这样:

View::composer('*', function($view)
{
   $users = Users::all();
   $view->with(compact(users );
}
Run Code Online (Sandbox Code Playgroud)

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

  var dataSet = JSON.parse({!!$users !!});
Run Code Online (Sandbox Code Playgroud)

但是,出现以下错误;

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

Zak*_*rki 5

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

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

var dataSet = JSON.parse({!!json_encode($chequesArray)!!});
Run Code Online (Sandbox Code Playgroud)

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

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

var dataSet = JSON.parse(atob('{{$chequesArray}}');
Run Code Online (Sandbox Code Playgroud)

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