在项目 laravel 的 javascript 函数中从控制器接收数组时出错

error when receiving an array from the controller in a javascript function in project laravel

我得到一个错误 “htmlspecialchars () expects parameter 1 to be string, array given”。我正在将一个数组从控制器传递到视图并尝试在 javascript 函数中收集它,非常感谢您的帮助。

代码控制器

$etis = EtiquetaPresupuesto::where('presupuestos_id', $id)->get();
$idEtiquetas=[];

foreach ($etis as $eti) {
    array_push($idEtiquetas, $eti->etiquetas_id);
}

return view('presupuestos_contabilidad/info-presupuestos', [
    'etiquetas_id' => $idEtiquetas,
]);

代码 javascript 可见

function etiquetas_sesion(){
    var array_etiquetas = {{$etiquetas_id}};
}

您必须使用 json_encode() 函数来获取数组或对象。

Also you can use @json() blade selector

例如:

function etiquetas_sesion(){
    var array_etiquetas = @json($etiquetas_id);
}
function etiquetas_sesion(){
    var array_etiquetas = {!! json_encode($etiquetas_id) !!}
}

$etiquetas_id 在你的代码中是一个数组,但你试图通过 {{ }} 将它打印为字符串,它通过 htmlspecialchars().

转义它

如果您希望数组保留在 JavaScript 中(作为 JavaScript 数组),请使用 json_encode():

var array_etiquetas = {!! json_encode($etiquetas_id) !!};