Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Laravel集合/数组转换为Javascript数组_Javascript_Jquery_Arrays_Json_Laravel - Fatal编程技术网

将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

我想将一个数组从Laravel分配给一个JavaScript数组。我已经从我的
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}}');