我想将Laravel中的数组分配给JavaScript数组。我已经从我的 function toggle(source) {
checkboxes = document.getElementsByName('chkInvID');
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.checked;
}
}
中获得了数组,并用json_decode像这样:
AppServiceProvider
然后我从javascript文件访问$ usersArray,例如:
View::composer('*', function($view)
{
$users = Users::all();
$view->with(compact(users );
}
但是我遇到以下错误;
var dataSet = JSON.parse({!!$users !!});
答案 0 :(得分:5)
由于要在服务器端进行编码,因此需要在客户端进行解码,例如:
$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_encode``来保留格式的原因),第二个将保留格式并允许使用引号使JS部分能够简单地对其进行解析。
答案 1 :(得分:-1)
var dataSet = @php $chequesArray @endphp;