将Laravel集合/数组转换为Javascript数组
我想将一个数组从Laravel分配给一个JavaScript数组。我已经从我的将Laravel集合/数组转换为Javascript数组,javascript,jquery,arrays,json,laravel,Javascript,Jquery,Arrays,Json,Laravel,我想将一个数组从Laravel分配给一个JavaScript数组。我已经从我的AppServiceProvider获取了数组,json_将其解码如下: View::composer('*', function($view) { $users = Users::all(); $view->with(compact(users ); } 然后,我从javascript文件访问$usersArray,如下所示: var dataSet = JSON.parse({!!$user
AppServiceProvider
获取了数组,json_将其解码如下:
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>)
jQuery.Deferred异常:JSON中位于位置1的意外标记o语法错误:JSON中位于位置1的意外标记o
在JSON.parse()处
由于您在服务器端对其进行编码,因此需要在客户端对其进行解码,如:
$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}}');
主要区别在于使用了
{}
和{!!!!}
,第一个字符会逃逸特殊字符,因此它会将引号“
转换为”
,然后JS将无法解析字符串(这就是为什么我们可以使用`base64\u encode``来保存格式),第二个将保留格式,并允许引用使JS部分能够简单地解析它。检查页面中的实际输出。JS代码是什么样子的?从可能重复的@Rorymcrossan中调试它。我只得到Laravel错误输出。在这种情况下,您应该搜索错误。这会导致这:@rorymcrossan我已经更新了我的问题。谢谢你的回答。我现在收到错误“jQuery.Deferred exception:Unexpected token&在JSON中位于位置2 SyntaxError:Unexpected token&在JSON中位于位置2”不客气,发生这种情况是因为“$users”“这不是一个数组,而是一个集合。善意地解释一下我如何将它从一个集合转换成一个阵列非常感谢你Zakaria。它起作用了!请解释一下刚才发生了什么事。注意。再次感谢Zakaria
$chequesArray = base64_encode(Users::all()->toJson());
var dataSet = JSON.parse(atob('{{$chequesArray}}');