как передать массив из laravel в js

#javascript #laravel

Вопрос:

Нужно передать массив в JS

Массив получен от контроллера (коллекции). Я получаю все удостоверения личности

 $top_menu->pluck('id')
 

введите описание изображения здесь
js-скрипт

 // 1 part of the menu
but_g_menu. onclick = function() {
    if(id_g_menu. style . display == "none")  {
        id_g_menu.style . display= "";
    }
    else  { id_g_menu.style . display = "none"; }
}
// 2 part of the menu
var id_menu = new Array('1111','2222','3333');
startList = function allclose() {
    for (i=0; i < id_menu.length; i  ){
        document.getElementById(id_menu[i]).style.display = "none";
    }
}
function openMenu(id){
    for (i=0; i < id_menu.length; i  ){
        if (id != id_menu[i]){
            document.getElementById(id_menu[i]).style.display = "none";
        }
    }
    if (document.getElementById(id).style.display == "block"){
        document.getElementById(id).style.display = "none";
    }else{
        document.getElementById(id).style.display = "block";
    }
}
window.onload=startList;
 

нужно передать идентификатор категории в js var id_menu = new Array(
или измените js каким-либо другим способом.
Я мало что понимаю в js.
Заранее благодарен за любую информацию!

Мне удается передать это так:

 var id_menu = json_encode($top_menu->pluck('id'));  
var id_menu = json_encode([1,2,3,4,16,19]); 
 

но скрипт не работает

 var id_menu = new (json_encode($top_menu->pluck('id')));  
var id_menu = new (json_encode([1,2,3,4,16,19])); 
 

это тоже не работает

Комментарии:

1. id_g_menu.style . display = "none"; неправильный синтаксис (слишком много пробелов) — это должно быть id_g_menu.style.display = "none";

2. это все равно не работает )) даже с пробелами, это работает так: новый массив(‘1111′,’2222′,’3333’);

Ответ №1:

Вам нужно передать массив в кодировке json в js.

 var id_menu = {{json_encode($top_menu->pluck('id'))}};  
 

Или вы можете использовать помощника по лезвию

 var id_menu = @json($top_menu->pluck('id'));